json - (反)序列化复杂的类层次结构
问题描述
我目前尝试序列化和反序列化我的应用程序的类模型,但我找不到一个很好的方法来做到这一点。
问题是某些组件具有抽象类型的成员变量(模型的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
}
解决方案
推荐阅读
- python - 如何修复discord.py中的“名称'服务器'未定义”错误
- javascript - Chai expect.to.throw 错误不相等
- sql - PostgreSQL - 如何获取按两列分组的数据?
- php - 如何在双数组 JSON (php) 上显示信息
- c# - 为什么这个运行良好的针对 Impala 的查询会通过 ODBC 驱动程序引发错误?
- gitlab-ci - 如何使用依赖的flyway迁移服务设置gitlab-ci mysql服务?
- c++ - 从字符串到函数
- android - 检查服务是否从活动类运行
- r - 字符串替换忽略字符
- angular - Angular 7 - 如果任何项目具有属性 true 则收集对象