🥑

초보 개발자의 일상

개발/SpringBoot

@JsonInclude

dev.jelee 2024. 11. 7. 22:45

1. @JsonInclude 정의

@JsonInclude는 Jackson 라이브러리에서 제공하는 애노테이션으로, JSON 직렬화 시 특정 속성이나 필드의 포함 여부를 제어합니다. 이를 사용하여 객체의 필드가 null인 경우나, 빈 값인 경우 해당 필드를 JSON 응답에서 제외할 수 있습니다.

주로 불필요한 데이터를 제외하고, 응답 크기를 최적화하기 위해 사용됩니다.


2. @JsonInclude 사용하는 이유

  • 불필요한 데이터 제외:
    • 기본적으로 객체의 속성이 null이거나 빈 값일 때 이를 JSON에 포함시키지 않음으로써, 응답 데이터 크기를 줄이고 효율성을 높입니다.
    • 예를 들어, null 값인 필드는 API 응답에 포함되지 않게 하여 클라이언트가 불필요한 null 값을 처리하지 않게 할 수 있습니다.
  • 응답 최적화:
    • 조건에 맞는 필드만 포함시켜 서버에서 클라이언트로 전송되는 데이터를 더 적게 만들 수 있습니다.
      클라이언트 측에서 처리할 데이터가 최소화되어 성능이 최적화됩니다.
  • 유연한 필드 처리:
    • @JsonInclude를 사용하여 필드에 대해 세밀한 조건을 설정할 수 있습니다. 예를 들어, null 값만 제외하거나 빈 문자열을 제외할 수도 있습니다.

3. @JsonInclude 사용하는 방법

1. 기본 사용법: null 값 제외

  • @JsonInclude(JsonInclude.Include.NON_NULL)을 사용하면 null 값인 필드는 JSON 응답에서 제외됩니다.
@JsonInclude(JsonInclude.Include.NON_NULL) // null 값 제외
public class Person {
    private String name;
    private Integer age;

    // 생성자, getter, setter
}

// @JsonInclude를 설정하면, name이나 age가 null일 경우 해당 필드는 JSON 응답에서 제외

 

2. 다양한 포함 조건 설정

@JsonInclude는 여러 가지 포함 조건을 설정할 수 있습니다:

예를 들어, 빈 컬렉션이나 빈 문자열도 제외하고 싶다면 NON_EMPTY를 사용합니다.

  • JsonInclude.Include.ALWAYS: 모든 필드를 포함 (기본값)
  • JsonInclude.Include.NON_NULL: null인 필드는 제외
  • JsonInclude.Include.NON_EMPTY: 빈 컬렉션이나 빈 문자열도 제외
  • JsonInclude.Include.NON_DEFAULT: 기본값(예: 0, false, "")인 필드는 제외
@JsonInclude(JsonInclude.Include.NON_EMPTY) // 빈 값도 제외
public class Product {
    private String name;
    private List<String> features;

    // 생성자, getter, setter
}

 

3. 클래스 레벨에서 설정하기

  • @JsonInclude는 클래스 레벨에서도 사용이 가능하여, 클래스 내 모든 필드에 동일한 포함 조건을 적용할 수 있습니다.
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Car {
    private String make;
    private String model;
    private Integer year;

    // 생성자, getter, setter
}

@JsonInclude를 사용하면 불필요한 데이터를 제외하고, JSON 응답을 최적화할 수 있으며, 필요한 데이터만 포함하여 효율적으로 처리할 수 있습니다.


 

 

출처: chat g pt

 

 

'개발 > SpringBoot' 카테고리의 다른 글

JWT 토큰 발행 받기  (0) 2024.11.08
Throwable cause, Throwable  (1) 2024.11.07
Builder  (0) 2024.11.07
Enum  (1) 2024.11.07
@JsonFormat  (0) 2024.11.07