Flutter数据解析Map格式

1,098 阅读2分钟

问题描述:

在flutter端进行网络数据解析时,后端返回一个带有jsonArray格式的复杂Map对象,咋一看有点懵,返回的数据如下:

"data":{
    "1908":[
        {
            "id":"1099",
            "createDate":"2021-05-31 00:41:12",
            "modifyDate":"2021-06-01 10:57:19",
            "orders":0,
            "beginDate":"2021-05-31 00:00:00",
            "content":"",
            "endDate":"2031-05-31 23:59:59",
            "imgPath":"https://xxx/upload/image/20210601/qpN5dnoh3.png",
            "title":"单个广告1",
          
            "adPosition":"1908",
            "adPositionName":"第一banner"
        }
    ],
    "1909":[
        {
            "id":"1157",
            "createDate":"2021-06-03 16:38:18",
            "modifyDate":"2021-07-14 13:54:31",
            "orders":0,
            "beginDate":"2021-07-16 00:00:00",
            "content":"",
            "endDate":"2021-07-16 23:59:59",
            "imgPath":"https://xxx/upload/image/20210714/Mp35LWiP3.jpg",
            "title":"轮播广告1",
          
            "adPosition":"1909",
            "adPositionName":"第二banner"
        },
        {
            "id":"1211",
            "createDate":"2021-06-24 08:50:38",
            "modifyDate":"2021-07-14 13:53:03",
            "orders":0,
            "beginDate":"2021-07-16 00:00:00",
            "content":"",
            "endDate":"2021-07-16 23:59:59",
            "imgPath":"https:/xxx/upload/image/20210714/qpGiCkV-3.png",
            "title":"轮播广告2",
   
            "adPosition":"1909",
            "adPositionName":"第二banner"
        
        }
    ]
}

解决方案:

仔细分析拆解数据格式类型,突然觉得很简单,这数据格式不就是Map<String,List>mapData吗? mapData.forEach((key,value){ //key就是1908,value就是List数据。 })

废话不多说,直接上代码

@JsonSerializable()
class FindAdByIdResponse extends BaseJsonResponse {
  Map<String, List<FindAdByIdData>> data;

  FindAdByIdResponse(int code, String message, DateTime serverTime, this.data) : super(code, message, serverTime);

  factory FindAdByIdResponse.fromJson(Map<String, dynamic> json) => _$FindAdByIdResponseFromJson(json);

  Map<String, dynamic> toJson() => _$FindAdByIdResponseToJson(this);
}
FindAdByIdResponse response = FindAdByIdResponse.fromJson(data.data);
Map<String, List<FindAdByIdData>>mapData = response.data;
mapData.forEach((key, value) { 
  //key就是1908,value就是List<FindAdByIdData>
});

小结

如果此文有所帮助,还请您给点个赞