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

Tầm quan trọng của chú thích @JsonView khi sử dụng Jackson trong Java?


JsonView chú thích có thể được sử dụng để bao gồm / loại trừ một thuộc tính trong quá trình tuần tự hóa và giải mã hóa động. Chúng tôi cần định cấu hình ObjectMapper lớp để bao gồm kiểu xem được sử dụng để viết JSON từ đối tượng Java bằng cách sử dụng writerWithView () phương pháp.

Cú pháp

@Target(value={ANNOTATION_TYPE,METHOD,FIELD})
@Retention(value=RUNTIME)
public @interface JsonView

Ví dụ

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.core.JsonProcessingException;
public class JsonViewAnnotationTest {
   public static void main(String args[]) throws JsonProcessingException {
      ObjectMapper objectMapper = new ObjectMapper();
      String jsonString = objectMapper.writerWithView(Views.Public.class).writeValueAsString(new Person());
      String jsonStringInternal = objectMapper.writerWithView(Views.Internal.class).writeValueAsString(new Person());
      System.out.println(jsonString);
      System.out.println(jsonStringInternal);
   }
}
// Person class
class Person {
   @JsonView(Views.Public.class)
   public long personId = 115;
   @JsonView(Views.Public.class)
   public String personName = "Raja Ramesh";
   @JsonView(Views.Internal.class)
   public String gender = "male";
   @Override
   public String toString() {
      return "Person{" +
             "personId=" + personId +
             ", personName='" + personName + '\'' +
             ", gender='" + gender + '\'' +
       '}';
   }
}
class Views {
   static class Public {}
   static class Internal extends Public {}
}

Đầu ra

{"personId":115,"personName":"Raja Ramesh"}
{"personId":115,"personName":"Raja Ramesh","gender":"male"}