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

如何在Flutter中创建数组对象的数据模型

在Flutter中创建休假类型的数据模型

没问题,我来一步步帮你搞定这个休假类型数组的Flutter数据模型,这样你就能轻松解析、使用这些数据了。

首先,我们先针对单个休假类型的JSON对象创建对应的模型类:

class LeaveType {
  final int id;
  final String name; // 用name比原字段Value更语义化,你也可以根据习惯保留value

  const LeaveType({
    required this.id,
    required this.name,
  });

  // 从JSON对象转换为LeaveType实例
  factory LeaveType.fromJson(Map<String, dynamic> json) {
    return LeaveType(
      id: json['Id'] as int,
      name: json['Value'] as String,
    );
  }

  // 可选:把LeaveType实例转回JSON对象(如果需要上传或存储数据的话)
  Map<String, dynamic> toJson() {
    return {
      'Id': id,
      'Value': name,
    };
  }
}

代码说明:

  • 属性名用了Dart规范的小驼峰命名,比原JSON的大驼峰更符合本地代码习惯,如果你想严格对应原字段名,直接改成id和value也完全没问题
  • fromJson工厂方法是核心,负责把单个JSON对象转换成模型实例,后续解析整个数组时就能批量处理
  • toJson方法是可选功能,如果你需要把模型数据转回JSON格式(比如提交给后端),就可以用上它

接下来,我们来解析整个JSON数组:

假设你已经拿到了原始的JSON数组(不管是本地硬编码还是从网络请求获取的),可以这样转换成LeaveType的列表:

// 导入dart:convert处理JSON解析(网络请求场景必须)
import 'dart:convert';

void main() {
  // 你的原始休假类型JSON数组
  final String leaveTypesRawJson = '''
  [
    {"Id": 1, "Value": "计划年假"},
    {"Id": 2, "Value": "非计划年假"},
    {"Id": 3, "Value": "病假"},
    {"Id": 4, "Value": "居家办公"},
    {"Id": 5, "Value": "事假"},
    {"Id": 6, "Value": "产假"},
    {"Id": 7, "Value": "丧假"},
    {"Id": 1002, "Value": "额外休假"}
  ]
  ''';

  // 把JSON字符串转成List<dynamic>
  final List<dynamic> jsonList = jsonDecode(leaveTypesRawJson);

  // 转换成LeaveType列表
  final List<LeaveType> leaveTypes = jsonList
      .map((jsonItem) => LeaveType.fromJson(jsonItem as Map<String, dynamic>))
      .toList();

  // 测试验证,打印第一个休假类型的名称
  print(leaveTypes.first.name); // 输出:计划年假
}

额外提示:

如果你的项目里已经在使用json_serializable这类代码生成库,也可以用注解的方式自动生成fromJson和toJson方法,减少手动代码量。不过如果只是简单的模型,上面的手动实现已经足够轻量好用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:32:32