[英]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.