加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 01:02:56 所属栏目:Java 来源:网络整理
导读:我正在使用Jackson将一个大的Json字符串转换为各种类和子类. 我有一个对象列表,每个对象包含一个节点对象,一个最后的结果对象和一个子数组. children数组包含具有完全相同设置的对象列表.这持续3或4层. 每个层的节点都是不同的子类,它们都是从节点超类扩展而
我正在使用Jackson将一个大的Json字符串转换为各种类和子类.

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

每个层的节点都是不同的子类,它们都是从节点超类扩展而来的.
我用以下注释注释了超类节点:

@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.

关于为什么会这样的想法?

解决方法

我需要为要显示的type属性添加visible = true:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include = JsonTypeInfo.As.EXISTING_PROPERTY,property = "type",visible = true)
@JsonSubTypes({
    @JsonSubTypes.Type(value = Type1ResponseDto.class,name =  "Type1"),name = "Type4")
})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读