与Dart / Flutter对象的JSON关联数组

时间:2018-12-26 01:39:10

标签: json dart flutter

我具有以下对象结构的JSON响应:

{
"cities": {
    "5": {
        "id": "5",
        "name": "New York"
    },
    "6": {
        "id": "6",
        "name": "Los Angeles"
    }
},
"total": 2,
"page": 1,
"total_pages": 1
}

如您所见,“城市”显然是一个关联类型数组,其中列出了所有被引用的城市。我正在尝试创建一个Dart对象,该对象可以保存JSON对象中的这些城市值。 城市对象非常简单:

class City {
  int id;
  String name;
  City(this.id, this.name);
  City.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    name = json['name'];
  }
}

但是,我不确定如何创建CityResults对象。我通常从json数组创建一个List对象,但不确定如何运行?

1 个答案:

答案 0 :(得分:2)

您必须修复City类,因为json中的'id'是String,因此有两个选择:

1-用字符串替换int

class City {
 String id;

2-更改fromJson方法

City.fromJson(Map<String, dynamic> json) {
    id = int.parse(json['id']);
    name = json['name'];
  }   

最后,这可能是您的解析方法:

         final Map cityResponse = json.decode(data)["cities"];
            final List<City> cities = cityResponse.values
                .map((jsonValue) => City.fromJson(jsonValue))
                .toList();

            //now you have the list of your cities inside cities variable.    
            cities.forEach((city) => print("City: ${city.id} , ${city.name}"));