ZH
我的工具

JSON 转 Dart 类(Flutter)

把 JSON 转成带 fromJson/toJson 的空安全 Dart 模型类,或生成 json_serializable 注解。支持嵌套类和列表。

Dart 代码
生成的类数
3

因为所有样本都是 null,或各样本的值类型不一致,所以使用了 dynamic — 知道真实类型后请替换它。

写成 10.0 的数字会被当作整数读取,所以样本全是这种写法的字段会变成 int — 若要得到 double,请加入一个带小数的样本。

我的工具 →
广告

Flutter 应用会把 JSON 解码为 Dart 模型类,而手写它们——字段、构造函数、fromJson 和 toJson——既慢又容易出错。粘贴一份 API 响应示例,就能得到空安全的 Dart 类:嵌套对象会各自成为一个类,数组变成 List<T>,在某些示例中为 null 或缺失的字段变成可空(T?),snake_case 的键变成 camelCase 字段,同时仍会读取正确的 JSON 键。你可以选择无需任何包的手写 fromJson/toJson,或用于代码生成的 json_serializable 注解。

使用方法

  1. 粘贴一份有代表性的 JSON 示例——含多项的数组能得出最准确的类型。
  2. 输入根类名。
  3. 选择手写的 fromJson/toJson、json_serializable,或仅字段。
  4. 决定字段是仅在需要时可空还是始终可空,以及 ISO 日期字符串是否变成 DateTime。
  5. 把代码复制到 .dart 文件中(使用 json_serializable 时需运行 build_runner)。

计算公式

整数 → int · 小数 → double · true/false → bool · 文本 → String · ISO 日期 → DateTime · [ … ] → List<T> · { … } → 类

在同一位置看到的值会被合并:int 和 double 合并为 double(通过 num 读取,所以 JSON 中的 1 不会导致类型转换失败),类型混杂则为 dynamic。在某些示例中为 null 或在某些数组项中缺失的字段是可空的。结构相同的对象共用一个类;列表项的类名取自键的单数形式(orders → Order)。与 Dart 关键字或 dart:core 类型冲突的名称会加后缀(class → classValue,Map → MapModel)。

示例

示例用户会生成三个类。User 包含 final int id、String name、String email、bool isActive(来自 is_active)、double balance、DateTime createdAt、List<String> tags、Address address、List<Order> orders,以及在示例中为 null 的 dynamic manager。Order 包含 String orderId、double total(59.9 和 12 合并为 double)、int items 和 String? coupon——优惠券只出现在第二个订单里,所以是可空的。fromJson 读取 json['order_id'],toJson 用 toIso8601String() 写出 createdAt。

常见问题

手写还是用 json_serializable?

手写的 fromJson/toJson 不需要任何包也没有构建步骤,适合小型模型。json_serializable 通过 build_runner 根据注解生成相同的代码;当模型经常变动时更容易维护。

为什么某个字段的类型是 dynamic?

因为所有样本都是 null,或样本中混有数字和文本等不同类型。请粘贴含真实值的示例,或手动设定类型。

为什么 double 字段使用 (json['x'] as num).toDouble()?

JSON 不区分 12 和 12.0,所以 jsonDecode 对整数返回 int。直接转换为 double 会抛出异常;经由 num 转换则两种都能接受。

我的 JSON 会被上传吗?

不会,这些类在你的浏览器中生成。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). JSON 转 Dart 类(Flutter). https://kakao.mobile/zh/tools/json-to-dart-pojo-generator/

MLA

“JSON 转 Dart 类(Flutter).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/json-to-dart-pojo-generator/.

广告