杰克逊注释将地图的关键字放在地图上POJO值

时间:2016-09-17 18:04:50

标签: java jackson

期望的Java:

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" }
    }
}

我可以通过添加属性&#34; name&#34;:&#34; a&#34;;名称:&#34; b&#34;,名称:&#34; c&#34 ;;在&#34; mymap&#34;中的每个对象中但我宁愿不复制那些信息,同时仍然让杰克逊为我建立一张地图。 我也不想为此写一个自定义反序列化器,因为杰克逊已经完成了99%的工作......

我想知道杰克逊是否有注释可以用来注入&#34; mymap&#34;的关键名称。到他们各自的对象值。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您想使用@JsonAnyGetter和@JsonAnySetter

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

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