@JsonProperty annotation use to rename of properties for JSON while serializing and deserializing to/from Java Class. This annotation can apply on properties and getter/setter method level.
@JsonProperty on Properties Level
public class StudentDetail { @JsonProperty(value = "id") private int rollNumber; @JsonProperty(value = "firstName") private String first_name; @JsonProperty(value = "lastName") private String last_name; }
@JsonProperty on getter/setter Level
- @JsonProperty at getter level change name, when serializing Java to JSON.
- @JsonProperty at setter level change name, when de-serializing Java to JSON.
public class StudentDetail { private int rollNumber; private String first_name; private String last_name; @JsonProperty(value = "id") public int getRollNumber() { return rollNumber; } public void setRollNumber(int rollNumber) { this.rollNumber = rollNumber; } JsonProperty(value = "firstName") public String getFirst_name() { return first_name; public void setFirst_name(String first_name) { this.first_name = first_name; } @JsonProperty(value = "lastName") public String getLast_name() { return last_name; } public void setLast_name(String last_name) { this.last_name = last_name; } }
@JsonProperty to Change index position in JSON
public class StudentDetail { @JsonProperty(value = "id") private int rollNumber; @JsonProperty(value = "firstName") private String first_name; @JsonProperty(value = "lastName" , index=1) private String last_name; }
@JsonProperty to Default Value in JSON
@JsonProperty, defaultValue attribute not work with json core, it work with JSON binding while using with @Entity in JPA.
public class StudentDetail { @JsonProperty(value = "id") private int rollNumber; @JsonProperty(value = "firstName") private String first_name; @JsonProperty(value = "lastName" , defaultValue="Gupta", index=1) private String last_name; }
Here you will see complete example of JSON properties name change and define index position for propertis.
Complete Example
public class StudentDetail { @JsonProperty(value = "id") private int rollNumber; @JsonProperty(value = "firstName") private String first_name; @JsonProperty(value = "middleName") private String middle_name; @JsonProperty(value = "lastName", index=1) private String last_name; public StudentDetail() { } //Getter and Setter //toString() method }
Code to convert JSON to Java object
public class JsonPropertiesNameChange { public static void main(String[] args) { String json = "{\"id\" : 11,\"firstName\" : \"Saurabh\",\"lastName\" : \"Gupta\"}"; System.out.println(json); try { // ObjectMapper new instance ObjectMapper objectMapper = new ObjectMapper(); // convert json data to respective java object StudentDetail student = objectMapper.readValue(json, StudentDetail.class); // print java student java object System.out.println(student); } catch (JsonMappingException ex) { ex.printStackTrace(); } catch (JsonGenerationException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } }
Output
{"id" : 11,"firstName" : "Saurabh","lastName" : "Gupta"}
StudentDetail [rollNumber=11, firstName=Saurabh, lastName=Gupta]
References
https://github.com/FasterXML/jackson-annotations
You would like to see
Follow below link to learn more on JSON and JSON issues solutions:
You must be logged in to post a comment.