@JsonInclude 어노테이션

seul·2022년 9월 27일
0

공부

목록 보기
2/13

일하면서 잘 모르는 개념들은 메모장에 정리해두고 있는데, 메모장이라는 게 언제 사라질지 모르는 것이니까 여기다가 다시 정리해봅니다.

오늘은 일하면서 DTO에 많이 붙어있는 어노테이션,
@JsonInclude에 대해서 정리해보겠습니다.

🥝 @JsonInclude

해당 어노테이션을 발견했던 위치

👩‍💻 seul: 저는 그 친구를 각종 Response DTO들에서 발견했었습니다.

ㅋㅋㅋ
ㅋㅋ

공통으로 사용하는 dto에서 쓰여있어서 이게 뭐지? 하게 되더라구요.
아래는 예시입니다.

@JsonInclude(JsonInclude.Include.NON_NULL)
public class CommonDTO { }

그래서 찾아봤어요.

JsonInclude를 말로 설명하기

Jackson으로 어떠한 데이터를 직렬화 할 때,
json으로 변경 시에 몇몇 값에 null이 있다면?
근데 나는 null로 들어오는 값들은 보고 싶지 않다면???

이 어노테이션으로 조절할 수 있다~

❗️JsonInclude의 다양한 옵션들❗️

ALWAYS

모든 값을 출력합시다

NON_NULL

null은 제외합시다

NON_ABSENT

null은 제외하고,
변수 중에 AtomicReference<> 타입이면서 선언만 되어있다면 제외합시다
Atmoic에 대한 이해가 부족해서 참고 url을 찾아왔어요 (AtomicBoolean 이런 것만 사용해봤지)
미래의 나야, 이 아래 url을 보렴
https://www.logicbig.com/tutorials/misc/jackson/json-include-non-absent.html

NON_EMPTY

약간 까다로움
1. null도 제외하고,
2. absent도 제외하고 (아마 NON_ABSENT를 포함하는 듯)
3. Collection, Map일 때 isEmpty()가 true여도 제외하고,
4. Array는 length가 0이면 제외하고,
5. String도 length가 0이면 제외해주세요

NON_DEFAULT

empty를 제외하면서,(아마 NON_EMPTY겠죠)
primitive 타입이 default면 제외해주세요 (ex. int/Integer: 0, boolean/Boolean: false)

CUSTOM, USE_DEFAULTS

얘네는 해봐야 알 것 같아요

나중에 테스트 해보고 글에 내용을 추가해볼게요

profile
자존감은 일상의 성실함으로부터 온다

0개의 댓글