Why I'm not able to unwrap and serialize a Java map using the Jackson Java library?
jackson, java, json
Solution
`@JsonUnwrapped` doesn't work for maps, only for proper POJOs with getters and setters. For maps, You should use `@JsonAnyGetter` and `@JsonAnySetter` (available in jackson version >= 1.6).
In your case, try this:
@JsonAnySetter
public void add(String key, String value) {
map.put(key, value);
}
@JsonAnyGetter
public Map<String,String> getMap() {
return map;
}
That way, you can also directly add properties to the map, like `add('abc','xyz')` will add a new key `abc` to the map with value `xyz`.
Problem
My bean looks like this: ``` class MyBean { private @JsonUnwrapped HashMap<String, String> map = new HashMap<String, String>(); private String name; public HashMap<String, String> getMap() { return map; } public void setMap(HashMap<String, String> map) { this.map = map; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` While I'm serializing the bean using the following code: ``` MyBean bean = new MyBean(); HashMap<String, String> map = new HashMap<String, String>();; map.put("key1", "value1"); map.put("key2", "value2"); bean.setMap(map); bean.setName("suren"); ObjectMapper mapper = new ObjectMapper(); System.out.println("\n"+mapper.writeValueAsString(bean)); ``` I'm getting result like this: ``` {"map":{"key2":"value2","key1":"value1"},"name":"suren"} ``` but ``` {"key2":"value2","key1":"value1","name":"suren"} ``` is expected per the JacksonFeatureUnwrapping documentation. Why am I not getting the unwrapped result?