gpt4 book ai didi

java - 为什么 Jackson 库内部实现利用 getter 调用来生成 Json

转载 作者:行者123 更新时间:2023-12-02 09:40:50 25 4
gpt4 key购买 nike

我有下面的一段代码用于生成 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。

最佳答案

这取决于ObjectMapper的可见性设置。

默认情况下,这些是 ObjectMapper 的可见性设置

enter image description here

(如果您查看图像,则其字段仅设置为公共(public),即它只会查找公共(public)字段)

您需要做的就是将 FIELD 的可见性设置为这样的任何类型 ->

mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);

完成后,ObjectMapper 将发现具有任何可见性的字段。

关于java - 为什么 Jackson 库内部实现利用 getter 调用来生成 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com