- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
When can we call @JsonAnyGetter and @JsonAnySetter annotations in Java?
The @JsonAnyGetter annotation enables to use a Map as a container for properties that we want to serialize to JSON and @JsonAnySetter annotation instructs Jackson to call the same setter method for all unrecognized fields in the JSON object, which means that all fields that are not already mapped to a property or setter method in the Java object.
Syntax
public @interface JsonAnyGetter public @interface JsonAnyGetter
Example
import java.io.*; import java.util.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.annotation.*; public class JsonAnyGetterAndJsonAnySetterTest { public static void main(String args[]) throws JsonGenerationException, JsonMappingException, IOException { Employee emp1 = new Employee(); emp1.setFirstName("Adithya"); emp1.setLastName("Sai"); emp1.setEmpId(125); emp1.getAdditionalInformation().put("technology1", "Machine Learning"); emp1.getAdditionalInformation().put("technology2", "Robotics"); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp1); System.out.println(jsonStr); System.out.println("Deserializing JSON to Object:"); Employee emp2 = mapper.readValue(jsonStr, Employee.class); System.out.println("id : " + emp2.getEmpId()); System.out.println("firstName : " + emp2.getFirstName()); System.out.println("lastName : " + emp2.getLastName()); System.out.println("Additional information : " + emp2.getAdditionalInformation()); } } // Employee class @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({"firstName", "lastName", "technologies", "empId" }) class Employee { @JsonProperty("EMPLOYEE_ID") private int empId; @JsonProperty("EMPLOYEE_FIRST_NAME") private String firstName; @JsonProperty("EMPLOYEE_LAST_NAME") private String lastName; private Map<String, String> additionalInformation = new HashMap<>(); public int getEmpId() { return empId; } public void setEmpId(int empId) { this.empId = empId; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @JsonAnyGetter public Map<String, String> getAdditionalInformation() { return additionalInformation; } public void setAdditionalInformation(Map<String, String> additionalInformation) { this.additionalInformation = additionalInformation; } @JsonAnySetter public void setAdditionalProperty(final String name, final String value) { this.additionalInformation.put(name, value); } }
Output
{ "EMPLOYEE_FIRST_NAME" : "Adithya", "EMPLOYEE_LAST_NAME" : "Sai", "EMPLOYEE_ID" : 125, "technology1" : "Machine Learning", "technology2" : "Robotics" } Deserializing JSON to Object: id : 125 firstName : Adithya lastName : Sai Additional information : {technology1=Machine Learning, technology2=Robotics}
Advertisements