我有一个从我的服务器获取的JSON文件,我想使用模型将数据保存到地图中,什么是正确的方法?
我已经创建了一个模型来解码JSON数据。我的JSON文件有一些" []
这是我的模型
class RestoModel {
// int id;
String name;
RestoModel(this.name);
RestoModel.fromJson(Map<String, dynamic> data) {
name = data['name'];
}
}
我的获取功能
List<RestoModel> restaurantList = [];
void fetchRestaurants() async {
var response = await get('https://link/get_list.php');
var data = RestoModel.fromJson(json.decode(response.body));
setState(() {
restaurantList.add(data);
print(response.body);
});
}
我得到此错误
Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'
这是我的JSON数据
[{"id":"1","name":"Resto 1"},{"id":"3","name":"Resto 2rn"}]
但是我的代码与此JSON数据一起使用
{
"name": "beatae et provident et ut vel",
}
我希望将JSON文件保存在列表中,但我会收到此错误
Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'
{"id":"1","name":"Resto 1"}
是映射, [{"id":"1","name":"Resto 1"},{"id":"3","name":"Resto 2rn"}]
是映射列表。因此,基本上,当您解码JSON时,您最终获得了模型列表,ID:1和ID:2。您正在尝试将动态列表提供给您的命名构造函数,该构造函数将单个地图作为参数,而不是其中的列表。
尝试以下操作:
Iterable i = json.decode(response.body);
List<RestoModel> restaurantList = i.map((model) => RestoModel.fromJson(model)).toList();
在此代码中,我有一个值得一提的,对于每个餐厅数据,我可以从JSON创建RESTOMODEL。