在开发过程中,我们一般都是使用插件或工具一键生成实体类的,这样极大的提高了开发效率,目前我们可以通过在线生成的方式来一键生成Dart类。
1. 使用json_to_dart
地址:
https://javiercbk.github.io/json_to_dart/
- 首先打开 json_to_dart
页面如下:
- 将json数据赋值到输入框中,点击创建Dart类,然后右边就是生成好的Dart代码,类名可以复制到编辑器后自行修改
- 使用如下
2. 使用 json_serializable
json_serializable是一个自动化的源代码生成器,可以为我们生成JSON序列化模板。在pubspec.yaml中添加依赖并执行flutter pub get:
dependencies:
json_annotation: ^3.0.0
dev_dependencies:
build_runner: ^1.0.0
json_serializable: 3.2.0
生成模型类我们使用写的json2dart工具。
https://caijinglong.github.io/json2dart/index_ch.html
- 工具使用很简单直接粘贴生成对应的类名称
- 将生成代码复制到我们创建的模型中。
- 运行代码生成程序
上面的模型类生成之后会先报错,因为模型类的生成代码还不存在,所以我们需要运行代码生成器来为我们生成序列化模板。
# 一次性生成
flutter packages pub run build_runner build
# 持续生成
flutter packages pub run build_runner watch
这里选择哪种方式取决于你的改动频率,推荐使用watch的方式。
- 使用
Map personList = JSON.decode(json);
var list = getPersonModelList(personList);
json_serializable这种方式,我们可以轻松的生成一个模型类。通过源代码生成器创建一个g.dart的文件,它具有所有必需的序列化逻辑。
3. 使用工具网站 - app.quicktype.io
其实我挺推荐这种。
app.quicktype.io是一个将JSON转换成模型类的工具网站,目前来看支持大部分常用语言,并且灵活的可选项也非常多:
用上面的JSON做一下尝试:
生成的模型类是使用了Flutter内置的dart:convert做序列化。
可以看到这个模型类正是我们需要的,使用方式也在上面注释的很清楚,目前来讲这种方式操作起来会比使用json_serializable操作起来更简便一些。
总结:
- json_to_dart: 效率高。
- json_serializable:效率高,watch很好用。
- app.quicktype.io工具网站:效率高,更多语言和功能可选。