2016-09-17 35 views
2

需要的Java:傑克遜註解把地圖的關鍵在地圖」 POJO值

class Root { 

    @JsonProperty("mymap") 
    private Map<String, Pojo> map; 
} 

class Pojo { 

    @JsonAnnotationThatIHopeExists 
    private String name; // set to the value of key in 'mymap' 
    @JsonProperty("val1") 
    private String val1; 
    // and many more... 
} 

JSON:

{ 
    "mymap": { 
     "a": { "val1": "first val"}, 
     "b": { "val1": "a val" }, 
     "c": { "val1": "some val" } 
    } 
} 

我可以很容易地通過添加屬性‘名稱’解決了這個問題:「一個「;名稱:「b」,名稱:「c」;在「mymap」中的每個對象中,但我寧願不復制該信息,同時仍然讓Jackson爲我製作一張地圖。 我也不想寫一個自定義的解串器,因爲傑克遜已經可以完成99%的工作......

我不知道是否有傑克遜的註釋我可以利用注入的關鍵名稱「mymap 「轉化爲它們各自的對象值。

任何想法?

回答

3

您要使用的@JsonAnyGetter和@JsonAnySetter

@JsonAnyGetter 
public Map<String, Object> any() { 
    return map; 
} 

@JsonAnySetter 
public void set(String name, Object value) { 
    map.put(name, value); 
}