[Flutter] 08-Flutter中的Json转Model

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Flutter] 08-Flutter中的Json转Model相关的知识,希望对你有一定的参考价值。

参考技术A

在此基础上,接下来我们看下Flutter中还有哪几种Json转模型的方式:

在上篇 [Flutter] 07-Flutter中反序列化Json 已经通过6个示例分析过了, 这里不再讨论。

json_serializable 是dart官方推荐和提供的JSON转Model的方式:

依赖分为项目依赖(dependencies),开发依赖(dev_dependencies),在 pubspec.yaml 中添加如下依赖:

由于很多朋友在这一步遇到了问题,这里贴出源码:

最后总结一下以json_serializable 的方式创建模型类必须5步:

备注1:
第五步实际就是创建两个方法:

备注2:

备注3:
UserFromJson(json) 和 ToJson() 调用方法,在未执行 生成对应的.g.dart文件指令 前该行可能会报错。

part \'computer.g.dart\'; 和 part \'user.g.dart\'; ,在未执行 生成对应的.g.dart文件指令 前该行可能会报错。

备注4:
toString方法不是必须的,只用来打印输出进行测试。

该操作有两种指令:一次性生成指令和 持续性生成指令。

一次性生成指令

在项目终端运行下面的指令:

持续性生成指令

如果感觉每次更改Model时都需要执行一次性生成指令比较繁琐,这时可以使用下面的持续生成指令:

在项目根目录下运行该指令后会启动观察器, 观察器可以监视我们项目中文件的变化,并在需要时自动构建必要的文件。只需启动一次观察器,然后它就会在后台运行,这种方式也很安全。

app.quicktype.io 是一个将 JSON 转换成模型类的工具网站,目前来看支持大部分常用语言,并且灵活的可选项也非常多:

优点: 这种方式操作起来会比使用json_serializable操作起来更简便一些,并且带下划线字段会自动转换为驼峰命名的属性名。
缺点: 如果数据过于复杂的话,在生成的时候可能会少了某一个类,并且不能进行父类抽取。

目前android Studio(或IntelliJ)有几个插件,可以将json文件转成Model类,但插件质量参差不齐,甚至还有一些有抄袭嫌疑,故笔者在此不做优先推荐,读者有兴趣可以自行了解。

总体推荐使用后两种,可以大大提升开发效率,不用埋头去搞一些重复的序列化工作。

以上是关于[Flutter] 08-Flutter中的Json转Model的主要内容,如果未能解决你的问题,请参考以下文章

NA嵌入Flutter页面

08Flutter--页面布局

Flutter支持WindowsMacOSWeb等

Flutter-自定义短信验证码

Flutter-自定义短信验证码

Flutter-自定义短信验证码