Is it possible to serialize / deserialize JSON in Java DTO with extra fields included in the map?

I have a DTO:

public Foo { public int bar = 123; public Map<String, Object> params; // key1=v1, key2=v2 etc. } 

I would like it to serialize to / from the following JSON:

 { "bar": 123, "key1": "v1", "key2": "v2" } 

Does anyone know how to do this using Jackson or Genson? Basically I want automatic type conversion for fields declared in the DTO, but any "optional" ones to go to the params map.

+8
java json jackson genson
source share
1 answer

Thanks @fge for putting me on the right track. Jackson has @JsonAnySetter and @JsonAnyGetter annotations that can be used for this:

 public Foo { public int bar; private transient Map<String, Object> params = new HashMap<String, Object>(); @JsonAnySetter public void set(String k, Object v) { params.put(k, v); } @JsonAnyGetter public Map getParams() { return params; } } 
+4
source share

All Articles