Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 Jackson 라이브러리로 null 및 빈 필드 무시하는 방법

Jackson은 강력한 데이터 바인딩 기능을 갖춘 Java 라이브러리로, 사용자 정의 Java 객체를 JSON으로 직렬화(serialize)하고 JSON을 다시 Java 객체로 역직렬화(deserialize)할 수 있는 프레임워크를 제공합니다.

Jackson 라이브러리는 직렬화 과정에서 클래스 전체 또는 개별 필드의 값을 기준으로 직렬화 여부를 제어할 수 있는 @JsonInclude 어노테이션을 제공합니다.

@JsonInclude 어노테이션의 주요 값

  • Include.NON_NULL: null이 아닌 값을 가진 속성만 JSON에 포함됩니다.
  • Include.NON_EMPTY: 비어 있지 않은(null 또는 빈 문자열이 아닌) 속성만 JSON에 포함됩니다.

예제 코드

아래 예제에서는 firstName 필드에는 @JsonInclude(Include.NON_NULL)을, lastName 필드에는 @JsonInclude(Include.NON_EMPTY)를 적용하여 null 값과 빈 문자열이 직렬화 결과에서 제외되도록 설정했습니다.

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;

public class IgnoreNullAndEmptyFieldTest {
    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);
        Employee employee = new Employee(115, null, ""); // null과 빈 필드 전달
        String result = mapper.writeValueAsString(employee);
        System.out.println(result);
    }
}

// Employee 클래스
class Employee {
    private int id;

    @JsonInclude(Include.NON_NULL)
    private String firstName;

    @JsonInclude(Include.NON_EMPTY)
    private String lastName;

    public Employee(int id, String firstName, String lastName) {
        super();
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

실행 결과

firstName은 null이고 lastName은 빈 문자열이므로, 두 필드 모두 직렬화에서 제외되고 다음과 같이 id 값만 출력됩니다.

{
  "id" : 115
}

이처럼 @JsonInclude 어노테이션을 활용하면 불필요한 null 또는 빈 값 필드를 JSON 출력에서 깔끔하게 제거할 수 있어, API 응답 크기를 줄이고 데이터의 가독성을 높일 수 있습니다.