Computer >> Máy Tính >  >> Lập trình >> Java

Khi nào sử dụng chú thích @JsonAutoDetect trong Java?


Chú thích @JsonAutoDetect có thể được sử dụng ở cấp lớp để ghi đè khả năng hiển thị thuộc tính của một lớp trong quá trình tuần tự hóa deserialization . Chúng tôi có thể đặt chế độ hiển thị bằng các thuộc tính như " createVisibility "," fieldVisibility "," getterVisibility "," setterVisibility "và" isGetterVisibility ". JsonAutoDetect lớp có thể xác định hằng số tĩnh công khai tương tự như lớp Java các cấp độ hiển thị như "ANY", "DEFAULT", "NON_PRIVATE", "NONE", "PROTECTED_AND_PRIVATE" và " PUBLIC_ONLY ".

Ví dụ

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
import java.io.*;
public class JsonAutoDetectTest {
   public static void main(String[] args) throws IOException {
      Address address = new Address("Madhapur", "Hyderabad", "Telangana");
      Name name = new Name("Raja", "Ramesh");
      Student student = new Student(address, name, true);
      ObjectMapper mapper = new ObjectMapper();
      String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student);
      System.out.println("JSON: " + jsonString);
   }
}
// Address class
class Address {
   private String firstLine;
   private String secondLine;
   private String thirdLine;
   public Address(String firstLine, String secondLine, String thirdLine) {
      this.firstLine = firstLine;
      this.secondLine = secondLine;
      this.thirdLine = thirdLine;
   }
   public String getFirstLine() {
      return firstLine;
   }
   public String getSecondLine() {
      return secondLine;
   }
   public String getThirdLine() {
      return thirdLine;
   }
}
// Name class
class Name {
   private String firstName;
   private String secondName;
   public Name(String firstName, String secondName) {
      this.firstName = firstName;
      this.secondName = secondName;
   }
   public String getFirstName() {
      return firstName;
   }
   public String getSecondName() {
      return secondName;
   }
}
// Student class
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
class Student {
   private Address address;
   private Name name;
   private Boolean isActive;
   public Student(Address address, Name name, Boolean isActive) {
      this.address = address;
      this.name = name;
      this.isActive = isActive;
   }
}

Đầu ra

{
 "address" : {
    "firstLine" : "Madhapur",
    "secondLine" : "Hyderabad",
    "thirdLine" : "Telangana"
 },
 "name" : {
    "firstName" : "Raja",
    "secondName" : "Ramesh"
 },
 "isActive" : true
}