Tag Archives: json defult value

JSON Properties Name and Index Change (Jackson)


@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:

Advertisements