2016-03-07 114 views
3

我使用數據綁定傑克遜2.7.2,我有一個接口上的以下注釋:避免JsonTypeInfo產生的重複字段傑克遜

@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被覆蓋(實現)在SubType1SubType2。問題是,當SubType1SubType2實例映射到JSON它包含兩個字段名爲type具有相同值:

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

如何防止傑克遜渲染重複的領域?

回答

-1

Jackson因爲已經在JsonTypeInfo註釋中告訴了它,所以再次呈現該類型,因爲它看到了一個吸氣劑,因此它在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"}