将复杂对象转换为Json ||序列化对象

时间:2018-12-21 22:03:39

标签: json dart flutter

我需要在本地序列化一个对象。最好的方法是什么?

我认为最好的解决方案是将我的对象转换为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之间似乎存在冲突。

有什么想法吗?

0 个答案:

没有答案