Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khi nào sử dụng annotation @JsonAutoDetect trong Java


Annotation @JsonAutoDetect dùng ở cấp class để ghi đè visibility của các property trong class khi serialization và deserialization. Có thể set visibility bằng các property: "creatorVisibility", "fieldVisibility", "getterVisibility", "setterVisibility" và "isGetterVisibility". Lớp JsonAutoDetect định nghĩa các hằng số public static tương tự mức visibility của Java class 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;    } }

Kết quả

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