[Java] 9. Class 객체에 null값인 객체의 필드명 미노출(NON_NULL, NON_EMPTY)


가끔 클라이언트에 데이터를 응답 할때 객체에 null값인 객체의 필드명들도 같이 아래와 같이 리턴된다. 단순한 검색 필드들이지만 불필요한 필드들의 null 값 리턴이나 의도적으로 미노출 하고자 하는 필드에 @JsonInclude 의 어노테이션에 NON_NULL옵션 를 선언하면 된다.


NoticeModel fields

@Data
public class NoticeModel {

    private Long noticeId;

    private String title;

    private String content;

    private String searchUserName;

    private String searchUseYn;
}


output

{
    "noticeId" : 9,
    "title" : "공지사항 제목",
    "content" : "공지사항에 대한 내용",
    "searchUserName" : null,
    "searchUseYn" : null
}



NoticeModel @JsonInclude fields

//Class Level에서 설정할 수 있다.
//@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public class NoticeModel {

    private Long noticeId;

    private String title;

    private String content;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String searchUserName;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String searchUseYn;
}


output

{
    "noticeId" : 9,
    "title" : "공지사항 제목",
    "content" : "공지사항에 대한 내용"
}


NON_NULL

  • null 제외


NON_EMPTY

  • null 제외
  • Collection, Map의 isEmpty()가 true 이면 제외
  • Array의 length가 0이면 제외
  • String의 length()가 0이면 제외


@JsonInclude 에 더 많은 옵션이 있다.