首页 > 解决方案 > (反)序列化复杂的类层次结构

问题描述

我目前尝试序列化和反序列化我的应用程序的类模型,但我找不到一个很好的方法来做到这一点。

问题是某些组件具有抽象类型的成员变量(模型的root成员具有抽象类型Super)。反序列化时,我无法知道root是 typeConcreteA还是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
}

标签: jsoninheritanceserializationflutterdart

解决方案


推荐阅读