You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Flutter Freezed如何将同层级JSON数据拆分至两个模型?

解决方案

要把扁平层级的JSON数据拆分到两个Freezed子模型中,你需要自定义UserInfoModel的fromJson方法,手动将扁平JSON拆分后分别传入子模型的解析方法——默认自动生成的fromJson会期望JSON包含defaultModel和etcModel嵌套字段,和你的扁平结构不匹配,所以必须手动实现。

修改后的UserInfoModel代码

@freezed
class UserInfoModel with _$UserInfoModel {
  const factory UserInfoModel({
    required DefaultModel defaultModel,
    required EtcModel etcModel,
  }) = _UserInfoModel;

  // 自定义fromJson,手动拆分扁平JSON
  factory UserInfoModel.fromJson(Map<String, dynamic> json) {
    return UserInfoModel(
      defaultModel: DefaultModel.fromJson({
        'name': json['name'],
        'age': json['age'],
        'gender': json['gender'],
      }),
      etcModel: EtcModel.fromJson({
        'hobby': json['hobby'],
        'favoriteFood': json['favoriteFood'],
      }),
    );
  }
}

关键说明

  • 直接从扁平json对象中提取对应字段,构建子模型所需的Map后,调用各自的fromJson完成解析。
  • 如果Gender是枚举类型,确保已配置正确的JSON解析逻辑(比如用json_serializable的@JsonEnum注解),避免解析失败。
  • 这种方式无需修改原有的DefaultModel和EtcModel,仅在组合模型层处理数据拆分即可。

内容的提问来源于stack exchange,提问作者seokseok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:25:28