gpt4 book ai didi

dart - 将 json 数据(多项)保存到 map 中

转载 作者:IT王子 更新时间:2023-10-29 07:20:21 24 4
gpt4 key购买 nike

我有一个从我的服务器获取的 json 文件,我想使用模型将数据保存到 map 中,正确的方法是什么?

我创建了一个模型来解码 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 2\r\n"}]

但是我的代码可以处理这个 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"} 是一张 map ,[{"id":"1","name":"Resto 1"},{"id":"3","name":"Resto 2\r\n"}] 是一个 map 列表。所以基本上当你解码你的 json 时,你最终得到了模型列表,id:1 和 id:2。您正在尝试将动态列表提供给您的命名构造函数,该构造函数将单个 Map 作为参数,而不是它们的列表。

试试这个:

  Iterable i = json.decode(response.body);
List<RestoModel> restaurantList = i.map((model) => RestoModel.fromJson(model)).toList();

在此代码中,我有一个可迭代对象,对于该可迭代对象中的每个餐厅数据,我都从 json 创建 restomodel。

关于dart - 将 json 数据(多项)保存到 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56010970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com