fgh*_*fdx 6 java polymorphism json jackson deserialization
我有一个非常类似于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...).反序列化SecondLevel直接起作用,反序列化的具体子类型也是如此FirstLevel.在上述问题上有一个"已检查"的答案,但据我所知,它表明将类层次结构扁平化为单一多态类型.
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |