[英]How to model class in order to serialize Dart Object (Map<String, List>) into JSON in Flutter?
[英]How to properly serialize/deserialize a map in dart/flutter?
您能否展示如何在 dart 中序列化/反序列化與 json 之間的映射<>? 例如,這里有一個簡單的數據 Class:
class SimpleData {
int _blah;
String _str;
SimpleData([this._blah, this._str]);
SimpleData.fromJson(Map<String, dynamic> json) {
_blah = json['b'];
_str = json['s'];
}
Map<String, dynamic> toJson() => {
'b' : _blah,
's' : _str,
};
}
這是 map 中使用的 SimpleData class:
class MapTest {
Map<int, SimpleData> _mapHell = Map<int, SimpleData>();
MapTest() {
_mapHell[1] = SimpleData(42, "Astfgl");
_mapHell[666] = SimpleData(1234, "Vassenego");
}
MapTest.fromJson(Map<String, dynamic> json) {
_mapHell = jsonDecode(json['coworkers']);
}
Map<String, dynamic> toJson() => {
'coworkers' : jsonEncode(_mapHell),
};
}
現在,當調用MapTest.toJson()
時,會拋出以下錯誤:
將 object 轉換為可編碼的 object 失敗:_LinkedHashMap len:2
您對toJson()/fromJson()
方法有什么想法嗎? 謝謝你。
編碼/解碼是正確的,只是 JSON 只允許字符串作為鍵。 將_mapHell
更改為Map<String, SimpleData>
可以正常工作。
class MapTest {
final _mapHell = Map<String, SimpleData>(); // Change the Map type
MapTest() {
_mapHell['1'] = SimpleData(42, "Astfgl"); // Use int, ie: '1'
_mapHell['666'] = SimpleData(1234, "Vassenego");
}
MapTest.fromJson(Map<String, dynamic> json) {
_mapHell = jsonDecode(json['coworkers']);
}
Map<String, dynamic> toJson() => {
'coworkers' : jsonEncode(_mapHell),
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.