[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的主要内容,如果未能解决你的问题,请参考以下文章