2014-02-12 42 views
3

鑑於類似下面的Java類:我可以將jackson-mapped @JsonProperties推送到「最高級別」嗎?

傑克遜將轉換成JSON像這樣

class MyClass { 

    String value; 

    Map<String,Object> map; 

    @JsonProperty("value") 
    public String getValue() { 
     return value; 
    } 

    @JsonProperty("map") 
    public Map<String,Object> getMap { 
     return map; 
    } 
} 

{ 
    "value": "abc", 
    "map": { 
     "key1": "value1", 
     "key2": "value2", 
     "key3": "value3" 
    } 

} 

我想的卻是「平坦」的map屬性不知何故,會出現其內容在這樣的JSON結構的「頂層」:

{ 
    "value": "abc", 
    "key1": "value1", 
    "key2": "value2", 
    "key3": "value3" 
} 

是否可能declar通過傑克遜註釋的任何組合,通過動畫? (這是對我實際問題的簡化,所以我沒有找到像「編寫你自己的自定義MyClass序列化程序」這樣的答案。實際上,這個類必須在自己的直接控制之外的場景中使用自定義ObjectMapper 。)

+1

'@ JsonAnyGetter'的作品(這裏解釋:http://stackoverflow.com/a/18043785/58530)。 –

+1

可能的重複[爲什麼我不能使用傑克遜Java庫解開和序列化java地圖?](http://stackoverflow.com/questions/18043587/why-im-not-able-to-unwrapp-and- serialize-java-map-using-jackson-java-library) –

回答

1

你可以嘗試@JsonUnwrapped

按照link,這是應該去除包裝層。這個註解標記的屬性將被「解包」,也就是說,通常會被寫爲子JSON對象的屬性的屬性將會被「解開」(unwrapped)作爲封閉JSON對象的屬性添加。

+0

@JsonUnwrapped似乎不適用於Google地圖。 –

+0

'@ JsonUnwrapped'不適用於地圖,只適用於具有getter和setter的正確POJO。對於地圖,您應該使用'@ JsonAnyGetter'和'@ JsonAnySetter'(可在傑克遜版本中使用> = 1.6)。請參閱http://stackoverflow.com/a/18043785/293933 –

相關問題