본문 바로가기
IT/Java

jackson annotation 관련

by 성준하이 2022. 8. 20.
반응형

자바에서 , 특히 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

 

Entity, DTO, VO 차이

자바에서는 객체를 구현하는 다양한 방법이 있는데 대표적으로 Entity, DTO, VO 이렇게 세가지가 있다. 이들에 대해서 다뤄보려고 한다. 먼저 세가지를 분명하게 구분하는 이유는 다음과 같다. Entity

thenicesj.tistory.com

 

반응형

'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

댓글