CommonResponse
로 Response
를 공통화할 때 사용을 했다.
public class CommonResponse<T> {
private String msg;
private T data;
public CommonResponse(String msg){
this.msg = msg;
}
public CommonResponse(T data){
this.data = data;
}
}
에서 data
가 있는 API response
가 있고 없는 API response
가 있었다.
만약 없는 response
라면 data
는 null
값으로 나오게 된다.
null
값이 나오는 것이 좋은 API는 아니라고 생각했다.
그렇다고 data
가 있는 것과 없는 것을 구별하게 되면 CommonResponse
(공통화 작업) 를 하는 것이 의미 없어진다고 생각했다.
만약 data
가 null
이라면 data
는 보내지 않고 msg
만 보내고 싶었다.
그래서 찾아낸 것이 @JsonInclude
이다!
@JsonInclude
는 여러 옵션들이 있다.
defalut
는ALWAYS
이다. 모든 값을 출력한다.
@JsonInclude
여러 옵션들JsonInclude.Include.ALWAYS
: 모든 데이터를 JSON으로 변환 (null 이든 아니든)
JsonInclude.Include.NON_NULL
: null인 데이터는 제외
JsonInclude.Include.NON_ABSENT
: null이거나 absent 값을 제외
JsonInclude.Include.NON_EMPTY
: null이거나 empty 로 간주되는 값을 제외 (빈 문자열, 빈 컬렉션, 빈 맵 등)
: 기본적으로 NON_NULL, NON_ABSENT 를 포함
JsonInclude.Include.NON_DEFAULT
: 해당 필드 값이 기본값과 다른 경우에만 해당 필드 출력 (변경된 필드 강조)
JsonInclude.Include.CUSTOM
: 사용자 정의 필터 객체를 지정해 포함 여부를 결정
나는 JsonInclude.Include.NON_NULL
를 사용해서 data
가 없는 response
는 msg
만 출력하도록 하였다.