首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jackson对JSON进行多态反序列化,属性类型变为"null“

使用jackson对JSON进行多态反序列化,属性类型变为"null“
EN

Stack Overflow用户
提问于 2015-03-11 18:14:46
回答 1查看 1.6K关注 0票数 6

我正在使用Jackson将一个大的Json字符串转换成各种类和子类。

我有一个对象列表,每个对象包含一个节点对象、最后一个结果对象和一个子数组。子数组包含具有完全相同设置的对象列表。这会持续3到4层。

每个层的节点都属于不同的子类,这些子类都是从节点超类扩展而来的。我已经用以下注释注释了超类节点:

代码语言:javascript
复制
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(value = Type1ResponseDto.class, name = "Type1"),
    @JsonSubTypes.Type(value = Type2ResponseDto.class, name = "Type2"),
    @JsonSubTypes.Type(value = Type3ResponseDto.class, name = "Type3"),
    @JsonSubTypes.Type(value = Type4ResponseDto.class, name = "Type4"),
    @JsonSubTypes.Type(value = Type5ResponseDto.class, name = "Type5")
})

这似乎是可行的,因为所有的子类都得到了映射。

但是,这会以某种方式导致"type“属性被设置为null。

你知道为什么会发生这种情况吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-11 18:52:51

我需要添加visible=true才能显示类型属性:

代码语言:javascript
复制
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type",visible = true)
@JsonSubTypes({
    @JsonSubTypes.Type(value = Type1ResponseDto.class,name =  "Type1"),
    @JsonSubTypes.Type(value = Type2ResponseDto.class, name = "Type2"),
    @JsonSubTypes.Type(value = Type3ResponseDto.class, name = "Type3"),
    @JsonSubTypes.Type(value = Type4ResponseDto.class, name = "Type4")
})
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28983806

复制
相关文章

相似问题

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