将JSON数据(多个项目)保存到地图中



我有一个从我的服务器获取的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。

最新更新