我需要在本地序列化一个对象。最好的方法是什么?
我认为最好的解决方案是将我的对象转换为json,将此json编码为字符串,并使用共享的首选项对该字符串进行序列化。
问题是,据我所知,没有toJson()
方法可以将整个对象转换为json。因此,我需要自己创建此方法。但是,我的对象带有嵌套的对象和对象列表非常复杂,某些属性有时可能为null。因此,toJson()
方法将使我非常复杂且麻烦。看起来可能会更复杂:
我想转换为json的健身类:
class Workout {
String id;
String name;
Routine routine;
List<Exercise> exercises;
Map<String, dynamic> toJson() => {
'name': name,
'exercises': [
exercises.map((Exercise exercise) {
print(exercise.toJson());
return exercise.toJson();
}).toString(),
],
};
}
运动课:
class Exercise {
String id;
String presetId;
Timings timings;
String progression;
Preset preset;
Map<String, dynamic> toJson() => {
id != null ? 'id': id : '',
'presetId': presetId,
progression != null ? 'progression': progression : '',
timings == null ? '' : 'timings': timings.toJson(),
};
}
时间类别:
class Timings {
int holdDown;
int positives;
int hold;
int negatives;
Map<String, dynamic> toJson() => {
'holdDown': holdDown,
'positives': positives,
'hold': hold,
'negatives': negatives
};
}
对象可能会变得更大,我仍然需要创建函数fromJson()
。另外,条件状态不能很好地起作用,因为语句“:”的“:”与实际的json之间似乎存在冲突。
有什么想法吗?