如何为Flutter Dart项目创建复杂JSON对应的Model类?
Dart Model类实现方案
针对你提供的JSON结构,下面是对应的Dart Model类实现,包含完整的序列化/反序列化方法:
1. 菜品项模型(MenuItem)
对应JSON数组里的单个菜品对象:
class MenuItem { final String id; final String title; final String price; final String image; final String visibility; MenuItem({ required this.id, required this.title, required this.price, required this.image, required this.visibility, }); // 从JSON解析 factory MenuItem.fromJson(Map<String, dynamic> json) { return MenuItem( id: json['id'], title: json['t'], price: json['p'], image: json['i'], visibility: json['v'], ); } // 转成JSON Map<String, dynamic> toJson() { return { 'id': id, 't': title, 'p': price, 'i': image, 'v': visibility, }; } }
2. 主响应模型(FoodResponse)
对应最外层的JSON结构,其中list字段是键为字符串、值为菜品列表的Map:
class FoodResponse { final String status; final Map<String, List<MenuItem>> list; FoodResponse({ required this.status, required this.list, }); // 从JSON解析 factory FoodResponse.fromJson(Map<String, dynamic> json) { Map<String, List<MenuItem>> parsedList = {}; json['list'].forEach((key, value) { List<MenuItem> items = (value as List) .map((item) => MenuItem.fromJson(item)) .toList(); parsedList[key] = items; }); return FoodResponse( status: json['status'], list: parsedList, ); } // 转成JSON Map<String, dynamic> toJson() { Map<String, dynamic> jsonList = {}; list.forEach((key, value) { jsonList[key] = value.map((item) => item.toJson()).toList(); }); return { 'status': status, 'list': jsonList, }; } }
使用示例
解析JSON字符串的示例代码:
import 'dart:convert'; String jsonString = ''' { "status": "1", "list": { "4": [ { "id": "1289", "t": "Mutton biriyani", "p": "21", "i": "1289_5305.jpg", "v": "0" }, { "id": "1288", "t": "Chicken biriyani", "p": "14", "i": "1288_5339.jpg", "v": "0" } ] } } '''; // 解析JSON Map<String, dynamic> jsonMap = jsonDecode(jsonString); FoodResponse response = FoodResponse.fromJson(jsonMap); // 访问数据 print('状态:${response.status}'); response.list['4']?.forEach((item) { print('菜品:${item.title},价格:${item.price}'); });
内容的提问来源于stack exchange,提问作者FoodBell UAE
相关产品推荐
相关产品推荐

