我使用的是Jackson Databind 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
的实例映射到JSON时,它包含两个名为type
且具有相同值的字段:
{
"type" : "SubType1",
... // Other properties
"type" : "SubType1"
}
如何防止杰克逊渲染重复字段?
答案 0 :(得分:-1)
杰克逊渲染类型一次,因为你已经在JsonTypeInfo注释中告诉它,然后它再次呈现它,因为它看到一个getter,所以它在getType()
上运行它的魔法并添加另一个属性。如果您在界面中为方法添加了@JsonIgnore
,则会将其呈现一次:
@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 {
@JsonIgnore
String getType();
}
产地:
{"type": "SubType1"}