(De-)序列化复杂的类层次结构

时间:2019-07-01 16:38:01

标签: json inheritance serialization flutter dart

我目前正在尝试对我的应用程序的类模型进行序列化和反序列化,但是我找不到一种很好的方法。

问题是某些组件的成员变量具有抽象类型(模型的root成员具有抽象类型Super)。反序列化时,我无法知道rootConcreteA还是ConcreteB类型的。我该如何很好地解决这个问题?

class Model {
  Super root;

  Model({this.root});
}

abstract class Super {
  int superProp;

  Super({this.superProp});
}

class ConcreteA extends Super {
  int aConcrete;

  ConcreteA({this.aConcrete, int superProp}) : super(superProp: superProp);
}

class ConcreteB extends Super {
  ConcreteB({int superProp}) : super(superProp: superProp);
}

void main() {
  var modelA = Model(root: ConcreteA(aConcrete: 1, superProp: 2));
  // somehow serialize and deserialize without code repetition in fromJSON
}

0 个答案:

没有答案