children: [
{
o kind: "t3"
data: { // ExampleNodeT3 class should be used for kind == t3
+ t3var1: "val1"
+ t3var2: true
}
}
{
o kind: "t4"
data: { // ExampleNodeT4 class should be used for kind == t4
+ t4var1: false
+ t4var2: 2346
}
}
] ... etc.
@JsonTypeInfo(use=Id.NAME, property="kind")
@JsonSubTypes({
@Type(value=ExampleNodeT3.class, name="t3"),
@Type(value=ExampleNodeT4.class, name="t4")})
public abstract class ExampleNode {
...
public void setData(ExampleNode data) {
this.data = data;
}
尝试使用 Jackson 反序列化此内容时,创建 ExampleNode 数据时 JsonTypeInfo 提示失败,因为“kind”属性与其父级相关联且不可见。我尝试了各种工厂方法和 Jackson 注释,但由于 Jackson 创建了 ExampleNode 对象并将其传递给 setData() 本身,我看不到任何地方可以控制创建的对象类。