避免Jackson中JsonTypeInfo生成重复字段的问题。

4

我正在使用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();
}

getTypeSubType1SubType2重写(实现)。问题在于,当SubType1SubType2的实例映射到JSON时,它包含两个名为type且值相同的字段:

{
  "type" : "SubType1",
  ... // Other properties
  "type" : "SubType1"
}

我应该如何防止jackson呈现重复字段?
2个回答

3

-1
Jackson渲染类型一次,因为您在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"}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接