@jsonanygetter注释允许使用map作为我们想要序列化为 json 和 @jsonanysetter 的属性的容器annotation 指示jackson在json对象中的所有未识别字段上调用相同的setter方法,这意味着所有未映射到java对象中的属性或setter方法的字段。
语法public @interface jsonanygetterpublic @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") 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); }}
输出{ "employee_first_name" : "adithya", "employee_last_name" : "sai", "employee_id" : 125, "technology1" : "machine learning", "technology2" : "robotics"}deserializing json to object:id : 125firstname : adithyalastname : saiadditional information : {technology1=machine learning, technology2=robotics}
以上就是在java中,我们什么时候可以调用@jsonanygetter和@jsonanysetter注解?的详细内容。