-
[SpringBoot] Jackson AnnotationFramework/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 이렇게 두 개 더 있는데 잘 안써서 공식 문서를 참고하시면 좋을 듯..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