如何在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
相关产品推荐
相关产品推荐

