我有一个对象层次结构,我想使用dart类将其序列化为json。下面是一个sudo代码示例:
@JsonSerializable(nullable: true)
class Person {
int age;
}
@JsonSerializable(nullable: true)
class Athlete extends Person {
int speed;
}
@JsonSerializable(nullable: true)
class BaseballPlayer extends Athlete {
int height;
}
@JsonSerializable(nullable: true)
class Building {
List<Person> people = [];
Building(){
people.add(Person());
people.add(Athlete());
people.add(BaseballPlayer());
}
}
字符串
我可以把这个流出来,但是当我读回来的时候,people里面有三个“Person“.. NOT a Person,Athlete和BaseballPlayer。它不知道如何加载特定的子类类型。我该如何处理这个?
3条答案
按热度按时间wooyq4lh1#
您可以使用Morphy https://pub.dev/packages/morphy来实现这一点。
(我是软件包的开发者)
它可以将json序列化和重新序列化为子类型。
字符串
pwuypxnk2#
您可以添加相应的枚举类型作为runtimeType指针
字符串
hmae6n7t3#
结晶化:
1.你应该为基类定义特殊的工厂方法来实现子类。
1.此外,它可以包含自己的运行时类型字符串的属性。
1.对应于子类,你应该在基类的工厂方法fromJson中使用它们的fromJson方法。
序列化:
1.你应该在子类中覆盖toJson。
举个例子,代码如下:
字符串