作者:拐久了_618 | 来源:互联网 | 2023-05-18 15:12
我正在使用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.
关于为什么会这样的想法?
1> Wim Berchman..:
我需要visible=true
为type属性添加以显示:
@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")
})