2016-09-17 25 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); 
}