用途 该技能用于从 JSON 结构生成 Dart 模型类,使用 json_annotation 处理 JSON 序列化,使用 equatable 实现值相等。当用户提供 JSON 对象并希望得到对应的 Dart 模型时使用;如果未提供 JSON,则需先向用户索取后再继续。
输入方式 用户以代码块或内联粘贴的方式提供 JSON 对象。
生成要求 生成的模型需满足:使用 json_annotation 进行 JSON 序列化;使用 equatable 实现值相等;包含 copyWith 方法;包含 fromJson 和 toJson 方法;包含供 equatable 使用的 props getter。不使用 @immutable 装饰器;不添加文档注释;除非明确要求,否则不使用 @JsonKey 注解。
模型结构 每个类以 @JsonSerializable() 标注并继承 Equatable,定义 final 字段,构造函数使用 required 标注必填字段,可选字段使用默认值或可空类型;copyWith 通过空合并运算符回退到当前实例值;fromJson 为静态方法并调用生成的 _$ModelNameFromJson,toJson 调用 _$ModelNameToJson;props getter 返回所有字段列表。
字段类型映射 字符串映射为 String;整数数字映射为 int;小数数字映射为 double;布尔映射为 bool;null 或缺失映射为可空类型(如 String?);原始类型数组映射为 List<Type>;对象数组映射为 List<ClassName>;对象映射为单独的类。
命名约定 类名使用 PascalCase;字段名使用 camelCase;必填字段为非空并使用 required 关键字;可选字段为可空并带 ?。
嵌套对象规则 对于具有多个属性的对象始终创建单独的类;对于元素为对象的数组始终创建单独的类;原始类型数组使用 List<String>、List<int> 等,无需创建类。类名推断:address 字段(对象)推断为 Address;profile.preferences(嵌套对象)推断为 Preferences;orders[](对象数组)推断为 Order;orders[].items[](嵌套数组)推断为 OrderItem。若上下文不清晰,则向用户询问期望的类名。
输出格式 每个类作为单独的代码块输出,并标注建议的文件名(如 user.dart、address.dart)。按依赖顺序列出所有需要的类,先叶子类,后根类。
适用场景 适用于需要将给定 JSON 结构快速转换为 Dart 数据模型的开发场景,尤其是涉及嵌套对象与对象数组、需要序列化与值相等能力的模型生成。
限制 未提供 JSON 时需先索取;不使用 @immutable 装饰器、不添加文档注释、不使用 @JsonKey 注解(除非明确要求);类名推断在上下文不清晰时需向用户确认。关于收费、价格、平台、效果等信息暂未提供。