如何将json值提取为自定义地图格式[Flutter]

时间:2019-05-15 16:48:35

标签: json dart flutter

我在从json向日历显示事件方面做了一些工作。我可以获取数据,但无法获取所需的Map格式。

我使用了以下代码。

...
Map<datetime, List> _events;

Future getdata() async {
    _events ={};
    final response = await http.get("http://192.168.1.15/sipjw/getData.php");
    jsonData = json.decode(response.body);

  for(var i = 0; i < jsonData.length; i++) {
        _events[DateTime.parse(jsonData[i]['tanggal'])] = [jsonData[i]['acara']];
       }
  }

,即使日期相等,它也会返回如下所示的值:

events: {
Datetime A : Event A
Datetime A : Event B
}

问题是,我想像这样将其提取到Map变量中。因此,每个日期时间都会获取事件列表。

Map<datetime, List> _events;

events: {
Datetime A : Event A, Event B, Event C
Datetime B : Event A, Event B
}

有可能实现这一目标吗?

2 个答案:

答案 0 :(得分:0)

将您的if(value != null && value.isNotEmpty && isUppercase(value[0])){ ... do amazing things } 循环替换为:

for

答案 1 :(得分:0)

如果您的DateTime等于毫秒(包括毫秒),则可以使用:

Map<int, List> _events; //millisecondsSinceEpoch : List

///...
int millisecondsSinceEpoch = DateTime.parse(jsonData[i]['tanggal']).millisecondsSinceEpoch;
if(_events[millisecondsSinceEpoch]==null){
    _events[millisecondsSinceEpoch] = [];
}
_events[millisecondsSinceEpoch].add(jsonData[i]['acara']);