java - Map json field from child object -
here description of issue convert json string json.
address{ private long id; private string city; } employee{ private long id; private string name; private address address; }
client send request json of employee
{"id": 1, "name": "abc", "address": {"id": 1, "city": "xyz"}}
now want convert input json below format addressid = id field of address class.
output{ private long id; private string name; private long addressid; }
is there way achieve this. have tried jackson , gson also.
with jackson, can add class addressid
wrap address id
field , annotated constructor takes addressid
argument. add getters , other constructors needed. doesn't require defining employee
, address
classes output
.
class output { private long id; private string name; private long addressid; @jsoncreator public output( @jsonproperty("id") long id, @jsonproperty("name") string name, @jsonproperty("address") addressid address) { this.id = id; this.name = name; this.addressid = address.getid(); } } class addressid { private long id; }
in case, need configure objectmapper
quietly ignore unknown json fields:
mapper.configure(deserializationfeature.fail_on_unknown_properties, false);
another alternative, doesn't require class addressid
, create custom setter addressid
field based on map<string, object>
jackson uses internally when deserializing. how output
in case (add other setters/getters may need):
class output { private long id; private string name; @jsonproperty("address") public void setaddressid(final map<string, object> address) { addressid = (integer) address.get("id"); } private long addressid; }
Comments
Post a Comment