flutter json转modle
时间: 2023-09-13 17:11:22 浏览: 57
Flutter中可以使用Dart语言中的json_serializable和json_annotation库来将JSON数据转换为Dart对象。
首先,在pubspec.yaml文件中添加以下依赖:
```yaml
dependencies:
flutter:
sdk: flutter
json_annotation: ^4.0.1
build_runner: ^2.0.4
```
然后,创建一个Dart文件(如models.dart),并在其中创建一个类,该类的字段应该与JSON数据的键相匹配。例如,如果JSON数据如下所示:
```json
{
"name": "John Smith",
"age": 30,
"email": "john.smith@example.com"
}
```
则可以创建以下Dart类:
```dart
import 'package:json_annotation/json_annotation.dart';
part 'models.g.dart';
@JsonSerializable()
class Person {
final String name;
final int age;
final String email;
Person({required this.name, required this.age, required this.email});
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
Map<String, dynamic> toJson() => _$PersonToJson(this);
}
```
在这个类中,@JsonSerializable()注释告诉json_serializable库要为这个类生成序列化和反序列化代码。fromJson()和toJson()方法是必须的,用于将JSON数据转换为对象和将对象转换为JSON数据。
接下来,运行以下命令:
```bash
flutter pub run build_runner build
```
这将生成一个名为models.g.dart的文件,其中包含fromJson()和toJson()方法的实现。
现在,可以使用以下代码将JSON数据转换为Person对象:
```dart
import 'dart:convert';
import 'models.dart';
void main() {
final jsonStr = '{"name": "John Smith", "age": 30, "email": "john.smith@example.com"}';
final jsonMap = json.decode(jsonStr);
final person = Person.fromJson(jsonMap);
print(person.name); // John Smith
print(person.age); // 30
print(person.email); // john.smith@example.com
}
```
同样,可以使用以下代码将Person对象转换为JSON数据:
```dart
import 'dart:convert';
import 'models.dart';
void main() {
final person = Person(name: 'John Smith', age: 30, email: 'john.smith@example.com');
final jsonStr = json.encode(person.toJson());
print(jsonStr); // {"name":"John Smith","age":30,"email":"john.smith@example.com"}
}
```
以上就是将JSON数据转换为Dart对象的基本步骤。可以根据自己的需要,创建多个类来表示不同的JSON数据结构。