当前位置:首页 > 编程笔记 > 正文
已解决

dart flutter json 转 model 常用库对比 json_serializable json_model JsonToDart

来自网友在路上 148848提问 提问时间:2023-09-26 15:01:48阅读次数: 48

最佳答案 问答题库488位专家为你答疑解惑

1.对比

我是一个初学者,一直跟着教材用原生的json,最近发现实在太麻烦了.所以搜索了一下,发现真的有很多现成的解决方案.

json_serializable

这是推荐最多的,也是 pub.dev likes最多的,

优点:

1.可以 识别 key 和 dart代码中的"name" 不相同的代码, 例如 {"name":"姓名"} 把 name 改为 dart中的 变量 name2 

2.可以使用 命令行自动生成

缺点:

书写 model 麻烦.不能直接从json 生成 dart model

依赖 json_annotation(暂且算一个缺点把)

json_model

一个命令行工具,用于从json 生成json_annotation 的model 文件

作者是 <Flutter实战·第二版> 的作者,估计是为了配合 写书,所以只有1.0版本,但是书中有代码说明,自己修改的话估计比较容易

优点: 支持多种格式(比如 类型 数组 以及 List<自定义类型> 注释 引入dart文件 等)

缺点:

{"bbb": {"bbb1": 10,"bbb2": 20}}会被识别为 Map<String, int> 

需要 改写为 {"bbb":"$[]bbb"} 然后再自定义一个 bbb的model

JsonToDart

有两个,其中一个下载量很大的不支持 Android Studio,只支持 JetBrains(要花钱买)

我只测试了 支持 Android Studio. 

缺点:

生成代码的时候 需要手动capy 代码到编辑框中(和使用网页差不多).

同样{"bbb": {"bbb1": 10,"bbb2": 20},"friends":[{"name": "中文","age": 10}]}

bbb会被识别为 Map<String, int> ,

friends可以正常转换为 List<Friend> 命名还是比较舒服的

优点:

代码不依赖 其他库

网页1

https://caijinglong.github.io/json2dart/index_ch.html

生成  json_serializable 代码

{"bbb": {"bbb1": 10,"bbb2": 20},"friends":[{"name": "中文","age": 10}]} 都能识别为 model

缺点:

friends 不会识别为 friend(无法识别英文复数)

需要手动复制代码到网页框

依赖 json_serializable 还需要再次build

网页2

https://jsontodart.zariman.dev/
https://github.com/shiburagi/JsonToDart

这个好像支持 vs code 插件.

优点:

生成的代码不依赖其他库

{"bbb": {"bbb1": 10,"bbb2": 20},"friends":[{"name": "中文","age": 10}]} 都能识别为 model

缺点:

friends 不会识别为 friend(无法识别英文复数)

需要手动复制代码到网页框

2.结论

不依赖 json_serializable 的方案 在 json 和 model 不完全一致(比如key名字不一样)的情况比较麻烦,

大部分方案都不方便写注释,如果在生成的代码中写注释,下次修改json 就是个麻烦.

json_model,写注释也不是很方便

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"dart flutter json 转 model 常用库对比 json_serializable json_model JsonToDart":http://eshow365.cn/6-14014-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!