繁体   English   中英

如何 model class 以序列化 Dart Z497031794414A553B435F90151ZAC<string, list> ) 进入 Flutter 中的 JSON?</string,>

[英]How to model class in order to serialize Dart Object (Map<String, List>) into JSON in Flutter?

我在 Dart 中有一个 Map<Datetime, List> ,它存储了在我的 Flutter 应用程序中填写日历所需的事件:

    final Map<DateTime, List> _events = {
    DateTime(2020, 7, 7): [
      {'name': 'Event A', 'isDone': true},
    ],
    DateTime(2020, 7, 11): [
      {'name': 'Event A', 'isDone': true}
    ],
    DateTime(2020, 7, 9): [
      {'name': 'Event A', 'isDone': true},
      {'name': 'Event B', 'isDone': true},
    ],
    DateTime(2020, 7, 10): [
      {'name': 'Event A', 'isDone': true},
      {'name': 'Event B', 'isDone': true},
    ],
    DateTime(2020, 7, 13): [
      {'name': 'Event A', 'isDone': true},
      {'name': 'Event B', 'isDone': true},
      {'name': 'Event C', 'isDone': false},
    ],
    DateTime(2020, 7, 25): [
      {'name': 'Event A', 'isDone': true},
      {'name': 'Event B', 'isDone': true},
      {'name': 'Event C', 'isDone': false},
    ],
    DateTime(2020, 7, 6): [
      {'name': 'Event A', 'isDone': false},
    ],
  };

我想将其转换为 JSON 但我不完全确定如何将 model 转换为 class。 有人有什么想法吗?

Event创建一个 model class 并将事件数据存储在其中(名称、isDone 和日期)。 然后你把它们放在List<Event>中。 您可以在此列表中搜索特定日期并获取相应的事件(如果有)。 然后您可以使该数据 class 可序列化

如果您只是想将其转换为 JSON 您可以使用jsonEncode function 并使用toEncodable命名参数来允许对 object 进行编码。 我在这里做了一个示例,只需将Map的键转换为String ,以便对其进行编码。

jsonEncode(
  _events,
  toEncodable: (input) {
    return _events.map((key, value) {
      return MapEntry(key.toString(), value);
    });
  }
);

当您想将其解码回您的Map<DateTime, List>时,您可以反其道而行之。

var objectTemp = jsonDecode(
  json,
);
var output = objectTemp.map((key, value) {
  return MapEntry(DateTime.parse(key), value);
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM