【发布时间】:2017-08-15 06:41:23
【问题描述】:
我有一个基类 A 和 2 个扩展 A 的子类 B 和 C。A 是一个抽象类。而 A 是另一个类中的一个字段 类似于:
@JsonTypeInfo({
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property= "type"
})
@JsonSubTypes({
@JsonSubTypes.Type(value = B.class, name = "b"),
@JsonSubTypes.Type(value = C.class, name = "c")
})
public abstract class A {
}
public class B extends A {
@JsonCreator
...
}
public class C extends A {
@JsonCreator
...
}
public class MyClass {
private A a;
}
我想序列化和反序列化 MyClass。虽然 MyClass 中的字段 A 可能为空,但我不想在序列化过程中跳过 A,即使它为空。然后,当我尝试反序列化 json 字符串时,我得到了 NPE。我认为这是因为 Json 字符串没有供映射器查找子类型的“类型”。有没有办法解决这个问题?
【问题讨论】:
标签: java json serialization jackson deserialization