JSON 转 Dart 类

JSON 转 Dart 实体类工具,为 Flutter / Dart 项目生成模型类,字段、构造函数、fromJson / toJson 方法一并生成,可空类型准确标注,支持 json_serializable 与 Freezed 注解风格。生成在浏览器本地完成。

在工作台中打开 本地处理 · 数据不上传

怎么使用

  1. 1

    粘贴 JSON

    粘贴接口 JSON,嵌套对象生成关联类,列表生成 List<T>。

  2. 2

    设置根类名

    默认 User,按业务修改;可空字段生成可空类型标注。

  3. 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,这类字段建议查看接口文档手工收窄。

相关工具