자바에서 , 특히 dto 에서 많이 사용하는 jackson 관련 annotation을 소개하려고 한다.
dto 에 대한 정의는 아래 참고 포스팅을 확인해보는것을 추천한다.
@JsonProperty
는 json을 받는 쪽에서 이름을 지정하여 받게 한다.
@JsonProperty("bookid")
private int book_id;
이렇게 되어있다면 실제로는 book_id 인데 bookid로 보내진 값을 book_id 값에 담는다.
@JsonUnwrapped
는 dto 안에 다른 dto가 선언 되어있으면 실제로 json 형식으로 받을때
"a":{
"b":"value",
"c":{
"d":"value",
"e":"value2"
}
}
이렇게 받아지는것을 C에다가 해당 어노테이션을 달 경우
"a":{
"b":"value",
"d":"value",
"e":"value2"
}
이렇게 묶인것을 풀수가 있다.
@JsonInclude
속성은 해당 값을 json에 포함되지 않도록 설정을 할수가 있다.
@JsonInclude(JsonInclude.Include.ALWAYS)
- 모든 데이터 json 변환
@JsonInclude(JsonInclude.Include.NON_NULL)
- null인 데이터 제외
@JsonInclude(JsonInclude.Include.NON_ABSENT)
- null 과 참조유형의 absent 값은 제외(Optional)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
- null 과 참조유형의 absent 값과 maps이 isEmpty(), array length가 0, String length 0 인 데이터 제외
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
- empty데이터와 기본형이 default와 date가 0인 것들을 제외
참고 포스팅
https://thenicesj.tistory.com/301
'IT > Java' 카테고리의 다른 글
@Valid annotation (BindingResult, Error)(유효성 검사) (48) | 2022.08.22 |
---|---|
querydsl 동적 쿼리 관련 (60) | 2022.08.21 |
Entity, DTO, VO 차이 (47) | 2022.08.18 |
JPA, Hibernate, Spring Data JPA (48) | 2022.08.17 |
자바 직렬화(Serializable) (34) | 2022.08.15 |
댓글