ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SpringBoot] Jackson Annotation
    Framework/Spring 2020. 8. 17. 16:35

    1. @JsonInclude

    - 어노테이션 속성을 제외 하는 데 사용된다. 어떤 방식으로 될지 사용하는 옵션으로는 다음과 같은 것이 있다.

    ALWAYS

    - 속성 값에 관계없이 항상 포함시키는 값입니다.


    NON_NULL

    -  null이 아닌 값만 포함시키는 값입니다.


    NON_ABSENT

    -  null이나  참조 유형의 "없음"값 (예 : Java 8 '선택적'또는 {link java.utl.concurrent.atomic.AtomicReference})을 제외함

       즉, null이 아닌 값을 따르지 않는 것입니다. 이 옵션은 대부분 "선택 사항"(Java 8, Guava)과 함께 작동하는 데 사용됩니다.


    NON_EMPTY

    - null 값이 있거나 비어있는 것으로 간주되는 값은 포함하지 않습니다.

       비어 있는 것으로 간주되는 값들은 다음과 같은 값이 있습니다.

       1) null 값 (NON_NULL 조건)

       2) absent 값 (NON_ABSENT 조건)

       3) Collections와 Maps 메서드에서 isEmpty()이 true인 경우

       4) arrays의 length 0인 경우

       5) String의 length()를 호출했을 때 0이거나 빈 String값일 경우

     

    - 호환성 참고 : Jackson 2.6에는 이전 (최대 2.5) 또는 이후 (2.7 이상) 유형보다 더 넓은 범위의 "빈"값이 포함되었습니다.

       6) timestamp 값이 0인 경우

       7) 기본 타입이 디폴트 값인 경우 (int나 Integer가 0이거나 bool/Boolean 값에서 false인 경우)

     


    NON_DEFAULT

    - NON_EMPTY조건과 동일

    - 기본형/래퍼 기본값은 제외됨

    - Date/time 값이 0L인 경우 제외됨


    CUSTOM,
    USE_DEFAULTS 이렇게 두 개 더 있는데 잘 안써서 공식 문서를 참고하시면 좋을 듯..

    공식 문서 : https://fasterxml.github.io/jackson-annotations/javadoc/2.9/com/fasterxml/jackson/annotation/JsonInclude.Include.html

     

    2. NON_NULL 예시

       - 자주 사용하는 NON_NULL에 대한 예시입니다.

       - 클래스에 적용 시킬 경우 클래스의 모든 변수에 적용

    //클래스의 적용시킬 경우
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class test{
    
      public int id;
      
      public String test;
    }
    
    //JsonInclude.Include.NON_NULL 사용시 null이 있을 경우 제외됨
    {
      "id":1
    },
    
    
    
    //특정 변수에만 적용할 경우
    public class test{
    
      @JsonInclude(JsonInclude.Include.NON_NULL)
      public int id;
      
      public String test;
    }
    

     

     

    'Framework > Spring' 카테고리의 다른 글

    [Spring] Querydsl 동적 쿼리  (0) 2022.03.04
    [Spring] QueryDsl projection(2)  (0) 2022.03.02
    [Spring] QueryDsl projection  (0) 2022.03.01
    [SpringBoot] 예외처리  (0) 2020.06.22
    [Spring Boot] Banner 배너 변경하기  (0) 2020.05.26
Designed by Tistory.