일하면서 잘 모르는 개념들은 메모장에 정리해두고 있는데, 메모장이라는 게 언제 사라질지 모르는 것이니까 여기다가 다시 정리해봅니다.
오늘은 일하면서 DTO에 많이 붙어있는 어노테이션,
@JsonInclude에 대해서 정리해보겠습니다.
👩💻 seul: 저는 그 친구를 각종 Response DTO들에서 발견했었습니다.
ㅋㅋㅋ
ㅋㅋ
ㅋ
공통으로 사용하는 dto에서 쓰여있어서 이게 뭐지? 하게 되더라구요.
아래는 예시입니다.
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CommonDTO { }
그래서 찾아봤어요.
Jackson으로 어떠한 데이터를 직렬화 할 때,
json으로 변경 시에 몇몇 값에 null이 있다면?
근데 나는 null로 들어오는 값들은 보고 싶지 않다면???
이 어노테이션으로 조절할 수 있다~
모든 값을 출력합시다
null은 제외합시다
null은 제외하고,
변수 중에 AtomicReference<> 타입이면서 선언만 되어있다면 제외합시다
Atmoic에 대한 이해가 부족해서 참고 url을 찾아왔어요 (AtomicBoolean 이런 것만 사용해봤지)
미래의 나야, 이 아래 url을 보렴
https://www.logicbig.com/tutorials/misc/jackson/json-include-non-absent.html
약간 까다로움
1. null도 제외하고,
2. absent도 제외하고 (아마 NON_ABSENT를 포함하는 듯)
3. Collection, Map일 때 isEmpty()가 true여도 제외하고,
4. Array는 length가 0이면 제외하고,
5. String도 length가 0이면 제외해주세요
empty를 제외하면서,(아마 NON_EMPTY겠죠)
primitive 타입이 default면 제외해주세요 (ex. int/Integer: 0, boolean/Boolean: false)
얘네는 해봐야 알 것 같아요
나중에 테스트 해보고 글에 내용을 추가해볼게요