有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    这取决于ObjectMapper的可见性设置

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

    enter image description here

    (如果查看图像,则其字段设置为仅公用,即仅查找公用字段)

    您只需将字段的可见性设置为以下任何类型->

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

    一旦你这样做,ObjectMapper将发现具有any可见性的字段