我正在尝试序列化一个类,以便它可以保存在共享首选项中。对于序列化,我使用Flutter的JsonSerializable包。
我生成的代码是这样的:class calculation {
List<int>? calcs;
List<int>? results;
List<int>? selectedSpots;
List<double>? linedataX;
List<double>? linedataY;
Map<int, List<int>>? someMap;
calculation({
this.calcs,
this.results,
this.selectedSpots,
this.linedataX,
this.linedataY,
this.someMap,
});
factory calculation.fromJson(Map<String, dynamic> jsonData) {
return calculation(
calcs: jsonData['calcs'].cast<int>(),
results: jsonData['results'].cast<int>(),
selectedSpots: jsonData['selectedSpots'].cast<int>(),
linedataX: jsonData['linedataX'].cast<double>(),
linedataY: jsonData['linedataY'].cast<double>(),
someMap: (jsonData['someMap'] as Map?)?.map(
(k, e) => MapEntry(int.parse(k as String), e as List<int> ),
),
);
}
static Map<String, dynamic> toMap(calculation calc) => {
'calcs': calc.calcs,
'results': calc.results,
'selectedSpots': calc.selectedSpots,
'linedataX': calc.linedataX,
'linedataY': calc.linedataY,
'someMap': calc.someMap?.map((k, e) => MapEntry(k.toString(), e)),
};
如果我的map是Map<int,>?
Map<int,> ?没问题。
是否知道如何正确转换为列表?
尝试更改
calcs: jsonData['calcs'].cast<int>(),
results: jsonData['results'].cast<int>(),
selectedSpots: jsonData['selectedSpots'].cast<int>(),
:
calcs: jsonData['calcs'].cast<List<int>>(),
results: jsonData['results'].cast<List<int>>(),
selectedSpots: jsonData['selectedSpots'].cast<List<int>>(),
现在转换为List
通过使用自定义对象而不是映射来解决这个问题。