In this post, I am going to explain how to use different property names for the serialization and deserialization using JsonGetter and JsonSetter annotations.
Example
public class Employee {
private String firstName;
// # Used during serialization
@JsonGetter("fname")
public String getFirstName() {
return firstName;
}
// # Used during deserialization
@JsonSetter("fn")
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
Above snippet generate the property fname during serialization and populate the property firstName from the json property fn during deserialization.
Find the below working application.
Employee.java
package com.sample.app.model;
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonSetter;
public class Employee {
private Integer id;
private String firstName;
private String lastName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
// # Used during serialization
@JsonGetter("fname")
public String getFirstName() {
return firstName;
}
// # Used during deserialization
@JsonSetter("fn")
public void setFirstName(String firstName) {
this.firstName = firstName;
}
// # Used during serialization
@JsonGetter("lname")
public String getLastName() {
return lastName;
}
// # Used during deserialization
@JsonSetter("ln")
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
JsonGetterAndSetterDemo.java
package com.sample.app;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sample.app.model.Employee;
public class JsonGetterAndSetterDemo {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
Employee emp = new Employee();
emp.setId(1);
emp.setFirstName("Krishna");
emp.setLastName("Gurram");
String json = objectMapper.writeValueAsString(emp);
System.out.println(json);
String jsonInput = "{\"id\":1,\"fn\":\"Krishna\",\"ln\":\"Gurram\"}";
Employee deserializedEmp = objectMapper.readValue(jsonInput, Employee.class);
System.out.println(deserializedEmp);
}
}
Output
{"id":1,"fname":"Krishna","lname":"Gurram"} Employee [id=1, firstName=Krishna, lastName=Gurram]
No comments:
Post a Comment