带你读《深入浅出Dart》十四、Dart中使用JSON(1)https://developer.aliyun.com/article/1349007?groupCode=tech_library
3.使用json_serializable
在上一部分中,我们介绍了如何手动将JSON转换为Dart对象。然而,当你处理复杂的JSON数据时,手动转换可能会变得繁琐并且容易出错。因此,你可能会想使用代码生成库来自动完成这部分工作。在Dart中,有一种非常流行的库就是json_serializable。
要使用json_serializable,你首先需要在pubspec.yaml文件中添加相关的依赖:
dependencies: flutter: sdk: flutter json_annotation: ^4.0.0 dev_dependencies: flutter_test: sdk: flutter build_runner: ^2.0.0 json_serializable: ^4.0.0
然后运行flutter pub get命令来安装这些包。
接下来,你需要定义你的模型类,并使用一些注解:
import 'package:json_annotation/json_annotation.dart'; part 'person.g.dart'; @JsonSerializable()class Person { String name; int age; String city; Person(this.name, this.age, this.city); factory Person.fromJson(Map json) => _$PersonFromJson(json); Map toJson() => _$PersonToJson(this);}
在这个例子中,_$PersonFromJson和_$PersonToJson是由json_serializable生成的辅助函数,它们将会在我们运行代码生成命令后自动生成。
现在,你可以运行以下命令来生成JSON序列化代码:
flutter pub run build_runner build
生成的代码将会放在一个名为person.g.dart的文件中。
现在,你就可以使用fromJson和toJson方法来进行JSON和模型的转换了:
void main() { var json = '{"name":"John Doe","age":30,"city":"New York"}'; var person = Person.fromJson(jsonDecode(json)); print(person.name); // 输出:John Doe var json = jsonEncode(person.toJson()); print(json); // 输出:{"name":"John Doe","age":30,"city":"New York"}}
json_serializable提供了许多其他的功能,例如处理嵌套的模型、使用自定义的日期格式、处理枚举类型等。要了解更多信息,你可以查看其官方文档。
带你读《深入浅出Dart》十四、Dart中使用JSON(3)https://developer.aliyun.com/article/1349005?groupCode=tech_library