I have a json Object in the below format, I need to assign the values from Json to java object, But the label name in JSON and class is different.
{ FirstName: "Sample", LastName: "LName", Address: [ { type: "Temp", street: "test stree", }, { type: "Perm", street: "test stree", } ] } Class Parent{ private String Name1; private String Nama2; private List<Address> address;} Class Address{ Private String type; private String data; }
I wanted to implement the custom object mapper using Java reflection. the mapping is as below, But I am not getting idea to implement this, Any valuable suggestion or usage of external api would help me to achieve the scenario.
Json Object name Jave Class object Name
FirstName ———- Name1
LastName ———- Name2
Address.type ——- Address class type
Address.street —– Address class data
Advertisement
Answer
You would need reflexion if you receive json data with same structure with properties names changing, for example :
{ FirstName1: "Sample", LastName1: "LName", Address1: [ { type1: "Temp", street1: "test stree", }, { type1: "Perm", street1: "test stree", } ] } { FirstName2: "Sample", LastName2: "LName", Address1: [ { type2: "Temp", street2: "test stree", }, { type2: "Perm", street2: "test stree", } ] }
In your case, it rather look like a property name matching issue, you can annotate your java pojo like that :
public class Parent{ @JsonProperty("FirstName") private String Name1; @JsonProperty("LastName") private String Nama2; private List<Address> address; } public class Address{ private String type; @JsonPRoperty("street") private String data; }
Finally you can deserialize your json object using standard Jackson library :
new ObjectMapper().readValue(json, Parent.class);