java Why Jackson库内部实现利用getter调用生成Json
下面是生成Json的代码
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
现在,为了创建Json,我需要编写如下代码
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
//map json to student
try{
Student student = mapper.readValue(jsonString, Student.class);
System.out.println(student);
jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student);
System.out.println(jsonString);
}
catch (JsonParseException e) { e.printStackTrace();}
catch (JsonMappingException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
}
现在,为什么Jackson库在内部使用getter方法生成json
# 1 楼答案
这取决于
ObjectMapper
的可见性设置默认情况下,这些是
ObjectMapper
的可见性设置(如果查看图像,则其字段设置为仅公用,即仅查找公用字段)
您只需将字段的可见性设置为以下任何类型->
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
一旦你这样做,
ObjectMapper
将发现具有any
可见性的字段