@JsonAnyGetter 注释允许使用Map作为我们想要序列化为 JSON 和 @JsonAnySetter 的属性的容器 annotation 指示Jackson在JSON对象中的所有未识别字段上调用相同的setter方法,这意味着所有未映射到Java对象中的属性或setter方法的字段。
public @interface JsonAnyGetter public @interface JsonAnyGetter
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")<strong> </strong> private String firstName; <strong> </strong> @JsonProperty("EMPLOYEE_LAST_NAME")<strong> </strong> 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; } <strong> </strong> @JsonAnyGetter<strong> </strong> public Map<String, String> getAdditionalInformation() { return additionalInformation; } public void setAdditionalInformation(Map<String, String> additionalInformation) { this.additionalInformation = additionalInformation; } <strong> </strong>@JsonAnySetter public void setAdditionalProperty(final String name, final String value) { this.additionalInformation.put(name, value); } }
{ "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}
以上是在Java中,我们什么时候可以调用@JsonAnyGetter和@JsonAnySetter注解?的详细内容。更多信息请关注PHP中文网其他相关文章!