JSON 转 Dart 类
JSON 转 Dart 实体类工具,为 Flutter / Dart 项目生成模型类,字段、构造函数、fromJson / toJson 方法一并生成,可空类型准确标注,支持 json_serializable 与 Freezed 注解风格。生成在浏览器本地完成。
在工作台中打开 本地处理 · 数据不上传
怎么使用
- 1
粘贴 JSON
粘贴接口 JSON,嵌套对象生成关联类,列表生成 List<T>。
- 2
设置根类名
默认 User,按业务修改;可空字段生成可空类型标注。
- 3
复制 Dart 代码
生成手写 fromJson/toJson 的完整类,或配合 json_serializable / Freezed 的注解风格。
功能特点
fromJson / toJson 齐全
生成命名构造函数与序列化方法,http、dio 返回的数据可直接 User.fromJson。
空安全支持
null 字段标注为可空类型(String?),兼容 Dart 2.12+ 空安全。
多种代码风格
支持纯手写类、json_serializable 注解、Freezed 兼容定义,匹配团队生成器方案。
嵌套与集合完整
嵌套对象自动级联生成 fromJson,List<Map> 推断为 List<Address> 强类型。
常见错误与排查
- ! 使用 json_serializable 时记得在 pubspec 中配置 build_runner 并执行 dart run build_runner build。
- ! Flutter 项目普遍使用空安全,接口可缺省字段务必保留 ? 标注避免解析异常。
- ! 命名风格按 Dart lowerCamelCase 转换,JSON 原键通过键名字符串映射,不影响收发。
常见问题
生成的类怎么用?
final user = User.fromJson(jsonDecode(response.body)); 发请求时 jsonEncode(user.toJson())。嵌套对象的 fromJson/toJson 已级联生成。
Freezed 和 json_serializable 怎么选?
json_serializable 是官方推荐、最轻量;Freezed 额外提供不可变性、copyWith、联合类型。团队已用 Freezed 时选择对应注解风格,并保持 part 指令文件名一致。
dynamic 和具体类型怎么区分?
能从样例确定的字段都给具体类型;只有类型冲突或无法判断(如任意对象)时退化为 dynamic,这类字段建议查看接口文档手工收窄。