Spring

Spring ) @JsonInclude(JsonInclude.Include.NON_NULL)

Albosa2lol 2023. 7. 5. 21:05
{
    "name": "John",
    "address": "123 Main St"
}

@JsonInclude(JsonInclude.Include.NON_NULL)은 Jackson 라이브러리를 사용하여 JSON 직렬화 시 필드 중 null 값인 경우 해당 필드를 제외하도록 지정하는 애노테이션입니다. JSON 직렬화란 Java 객체를 JSON 형식으로 변환하는 과정을 말합니다.

기본적으로 Jackson은 Java 객체의 모든 필드를 JSON으로 변환합니다. 그러나 때로는 일부 필드가 null일 경우 JSON에 포함시키지 않는 것이 유용할 수 있습니다. 예를 들어, 클라이언트와 서버 간의 데이터 통신에서 불필요한 데이터를 줄이고자 할 때 이 애노테이션을 사용할 수 있습니다.

@JsonInclude(JsonInclude.Include.NON_NULL)을 클래스 레벨에 선언하면 해당 클래스의 모든 필드에 적용됩니다. 이 애노테이션을 사용하면 null 값인 필드가 JSON으로 변환되지 않고 제외됩니다. 즉, 직렬화된 JSON 결과에는 null 값인 필드가 포함되지 않게 됩니다.

예를 들어, 다음과 같은 클래스가 있다고 가정해봅시다

 

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Person {
    private String name;
    private Integer age;
    private String address;

    // 생성자, getter, setter 등 생략
}

위의 예제에서 @JsonInclude(JsonInclude.Include.NON_NULL) 애노테이션은 null 값을 가지고 있는 필드를 JSON으로 변환할 때 제외시키는 역할을 합니다. 즉, name, age, address 중 값이 null인 필드는 JSON으로 변환되지 않습니다.

 

예를 들어, 다음과 같은 객체를 JSON으로 직렬화한다고 가정해봅시다.

Person person = new Person();
person.setName("John");
person.setAge(null);
person.setAddress("123 Main St");

@JsonInclude(JsonInclude.Include.NON_NULL) 애노테이션이 적용된 경우, age 필드가 null이므로 JSON 결과에는 포함되지 않습니다

{
    "name": "John",
    "address": "123 Main St"
}

@JsonInclude(JsonInclude.Include.NON_NULL) 애노테이션을 사용하여 필요한 경우 JSON 직렬화 결과에서 null 값을 제외할 수 있습니다.