小编fgh*_*fdx的帖子

与Jackson嵌套的多态反序列化

我有一个非常类似于Jackson反序列化嵌套多态类型的用例,除了我想要有两个基于JsonTypeInfo.As.PROPERTY不同属性名称反序列化的嵌套抽象类型.

超类型:

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    property = "first_level_discriminant")
@JsonSubTypes({
        @JsonSubTypes.Type(value = SecondLevel.class, name = "second_level")
})
public abstract class FirstLevel { }
Run Code Online (Sandbox Code Playgroud)

二级类型:

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    property = "second_level_discriminant")
@JsonSubTypes({
        @JsonSubTypes.Type(value = ConcreteType.class, name = "concrete_type")
})
public abstract class SecondLevel { }
Run Code Online (Sandbox Code Playgroud)

具体类型:

public class ConcreteType extends SecondLevel {
    public String value;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试反序列化时{"first_level_discriminant":"second_level","second_level_discriminant":"concrete_type","value":"value"},我得到一个常规的抽象类型错误(Can not construct instance of SecondLevel: abstract types either need...).反序列化 …

java polymorphism json jackson deserialization

6
推荐指数
0
解决办法
364
查看次数

标签 统计

deserialization ×1

jackson ×1

java ×1

json ×1

polymorphism ×1