2016-03-07 72 views
1

代替字段名,我想知道是否有更換使用@JsonTypeInfo使用@JsonTypeInfo

這裏的字段名的方式就是我要實現

class Tnode<T>{ 

    @JsonTypeInfo(use=Id.NAME, include=As.WRAPPER_OBJECT, property="type") 
    T obj; 

    public T getObj() { 
     return obj; 
    } 

    public void setObj(T obj) { 
     this.obj = obj; 
    } 

} 

我得到的輸出

什麼
{ 
    "obj": { 
     "Foo": { 
      "name": "xyz" 
     } 
    } 
} 

整點是我不想額外的圖層「obj」作爲字段名稱。我希望「Foo」能夠達到一個以上的水平。在代碼中,我將泛型類型設置爲具體類型。我希望具體的類名顯示出來,而不是將其包裹起來。

我曾嘗試更改爲包含= As.PROPERTY,但它將stil輸出爲「obj」。

我沒有使用自定義序列化器解決。但我必須設定每一個領域。

public class CustomSerializer extends JsonSerializer<Object> { 
    public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { 
     jgen.writeStartObject(); 
     jgen.writeObjectField("somename", value); 
     jgen.writeEndObject(); 
    } 
} 

但問題是當過我要補充的TNODE類中的實例變量我要補充一點的代碼在自定義序列。我想避免這種情況。 有什麼建議嗎?

回答

0

沒有辦法做到這一點。包含在類型信息中的包含Object的屬性的名稱必須是靜態已知的(以定位邏輯屬性)。它不能改變。

相關問題