我正在Spring /Spring的基础上编写一个API,即使简单类层次结构的反序列化就像一种魅力,我也无法使用jackson将Json输入反序列化为适当的类型。以下是我的班级层次结构:
public class A {
protected String fieldA;
}
public class B extends A {
protected String fieldB;
}
public class C extends A {
protected String fieldC;
}在每个人把我介绍给其他许多类似的问题之前,这里的主要区别是A是具体的。换句话说,Jackson必须在3种实现之间进行选择,方法是使用json字段作为绑定中断器。
基本上,我如何配置Jackson使其反序列化:
{
"fieldA": "asdf"
} A的实例,以及
{
"fieldA": "asdf",
"fieldB": "asdf"
} 一个B的例子?
发布于 2014-02-07 18:53:45
没有办法自动做到这一点:所有的自动多态类型处理都依赖于某种类型的类型鉴别器(类型属性,最常见)。使用基于内容的启发式方法的能力已经被要求,但到目前为止还没有人提出一个可行的计划(或贡献)来实现这样的功能。
要处理它,您可能需要编写一个自定义JsonDeserializer并自己检测类型。也许可以使用ConvertingDeserializer,让杰克逊先将JSON绑定到JsonNode或java.util.Map中,然后自己提取。
https://stackoverflow.com/questions/21605594
复制相似问题