首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jackson继承和反序列化

Jackson继承和反序列化
EN

Stack Overflow用户
提问于 2014-02-06 14:27:28
回答 1查看 2.6K关注 0票数 3

我正在Spring /Spring的基础上编写一个API,即使简单类层次结构的反序列化就像一种魅力,我也无法使用jackson将Json输入反序列化为适当的类型。以下是我的班级层次结构:

代码语言:javascript
运行
复制
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使其反序列化:

代码语言:javascript
运行
复制
{
    "fieldA": "asdf"
} 

A的实例,以及

代码语言:javascript
运行
复制
{
    "fieldA": "asdf",
    "fieldB": "asdf"
} 

一个B的例子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-07 18:53:45

没有办法自动做到这一点:所有的自动多态类型处理都依赖于某种类型的类型鉴别器(类型属性,最常见)。使用基于内容的启发式方法的能力已经被要求,但到目前为止还没有人提出一个可行的计划(或贡献)来实现这样的功能。

要处理它,您可能需要编写一个自定义JsonDeserializer并自己检测类型。也许可以使用ConvertingDeserializer,让杰克逊先将JSON绑定到JsonNodejava.util.Map中,然后自己提取。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21605594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档