我使用的是JacksonDatabind 2.7.2,并且在接口上有以下注解:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = SubType1.class, name = "SubType1"),
@JsonSubTypes.Type(value = SubType2.class, name = "SubType2")})
public interface Common {
String getType();
}
getType
在SubType1
和SubType2
中被覆盖(实现)。问题在于,当SubType1
或SubType2
的示例被Map到JSON时,它包含两个名为type
的字段,这两个字段具有相同的值:
{
"type" : "SubType1",
... // Other properties
"type" : "SubType1"
}
如何防止Jackson渲染重复字段?
2条答案
按热度按时间w7t8yxp51#
如果有人碰巧遇到此错误,可以通过更改缺省的 include 属性来解决
默认情况下Jackson使用JsonTypeInfo.as.PROPERTY
参考:https://fasterxml.github.io/jackson-annotations/javadoc/2.4/com/fasterxml/jackson/annotation/JsonTypeInfo.As.html
dced5bon2#
Jackson呈现类型一次是因为你在JsonTypeInfo注解中告诉它要这样做,然后它再次呈现它,因为它看到了一个getter,所以它在
getType()
上发挥了它的魔力,并添加了另一个属性。如果你在接口中的方法上放置了一个@JsonIgnore
,它将呈现它一次:产生: