SeP*_*läm 10 json dart flutter
您能否展示如何在 dart 中将 map<> 与 json 进行序列化/反序列化?例如,这是一个简单的数据类:
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,
};
}
Run Code Online (Sandbox Code Playgroud)
这是地图中使用的 SimpleData 类:
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),
};
}
Run Code Online (Sandbox Code Playgroud)
现在,当调用 时MapTest.toJson(),会抛出以下错误:
将对象转换为可编码对象失败:_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),
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4066 次 |
| 最近记录: |