问题描述:
在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>
});
小结
如果此文有所帮助,还请您给点个赞