TLDR
🔔 使用Dart QuickType。它可以从JSON对象中生成最好的Dart代码。
Quicktype
Quicktype是一个针对JSON对象的多语言转换器,它也支持Dart。有一些选项可以自定义生成的类。而且还有一个Visual Studio Code的扩展。
结果包含一切,但也有问题。
- Quicktype不使用
required关键字,而是使用旧的@required注释。 - Quicktype不支持null-safety
这使得代码在没有手动修改的情况下无法使用。Dart语言还有77个开放问题,而且官方源代码已经几个月没有更新了。我不指望在这里有什么进展,但尽管有必要的手动修改,这个工具仍然可以节省开发时间。
扎实,但不完美。比自己写要快。😒
JSON到Dart的转换器
JSON to Dart Converter是一个免费的在线Dart模型类生成器。唯一可用的选项是使字段私有化。在这种情况下,会生成getters和setters。
JSON可以被转换为Dart类,但有很大的问题。
- 没有防空功能
- 当字段为私有时,会生成获取器和设置器
- 数组没有被识别为
List<int>,而是被识别为Object<int> - 类型为
Object的列表没有被识别
总的来说,这段代码几乎是无用的,因为你需要大量的时间来修复错误,如果你自己写的话,会更快。没有GitHub仓库或类似的东西,只有一个邮件地址用于联系。这个网站看起来像是昨天才开始的,除了这个转换器,没有任何内容。
不要使用它,这是在浪费时间!⛔
JSON格式化器
JSON formatter是另一个免费的在线Dart模型类生成器。没有任何选项可以选择,你只需输入JSON,该工具就会将其转换为Dart类。
输出的结果是无用的,甚至没有fromJson 和toJson 方法。没有null-safety,没有final fields,但至少对象结构被正确转换。
绝对不值得!⛔
JSON到Dart模型
JSON to Dart Model为输出提供了许多自定义选项。该代码是开源的,目前有3个开放问题。该项目似乎不像quicktype那样出名,但生成的代码会在当前的Dart版本中开箱工作。
转换后的JSON片段作为注释包含在代码中,这有点让人讨厌。另外,数组的转换似乎非常麻烦。而且可悲的是,转换器创建了两个名称不同的相同对象。但除此之外,它看起来不错。然而,我不会使用这个结果,因为代码风格非常奇怪,我必须做大量的重构工作。
可以工作,可以使用,但代码风格很奇怪。🙄
Dart QuickType
Dart QuickType是Quicktype的一个分叉,它的代码基础更新。所有提到的Quicktype的缺陷都在这里得到了修复。这里没有任何公开的问题,创建的Dart代码看起来很简单,很苗条。
默认值、无效安全、最终字段......你需要的一切都在这里。我唯一希望加入的小东西是等价物,因为我一直在使用它。但我可以容忍这一个手动步骤。也许作者会在未来的版本中加入我的建议。
明显的赢家,没有反对意见,最好的代码生成!✔
JSON到Dart的在线转换器 空值安全
JSON到Dart的在线转换器Null Safety除了设置类名外,没有任何选项,而且生成的代码不能开箱即用。
这段代码的一些缺陷。
- 在使用
late关键字时,没有必要。required - 变量可以像关键字一样命名→编译器错误
- 创建了两个相同的类
Object和List - 在
fromJson方法中没有后退值 - 创建的类有额外的编译器错误
需要手动更正的地方太多,没有用处。⛔
结论
Dart QuickType生成的代码是最好的,是这次比较的赢家。在某种程度上,如果你不介意代码的风格,你也可以使用JSON to Dart Model。所有其他的转换器都不值得花时间,所以直接跳过它们。
我错过了一个好的转换器吗?如果你认为我应该给它一个机会,请告诉我 😉