[java] Java Jersey에서 JSON 직렬화 및 역직렬화를 커스터마이즈하는 방법은?

Java Jersey는 RESTful 웹 서비스를 구축하기 위한 강력한 프레임워크입니다. 기본적으로 Jersey는 JSON 형식의 데이터 직렬화 및 역직렬화를 지원합니다. 그러나 때로는 기본 동작을 커스터마이즈하여 특정 요구 사항에 맞게 작업해야 할 수 있습니다.

이번 블로그에서는 Java Jersey에서 JSON 직렬화 및 역직렬화를 커스터마이즈하는 방법을 알아보겠습니다.

Jackson 사용하기

Java Jersey는 기본적으로 Jackson 라이브러리를 사용하여 JSON 직렬화 및 역직렬화를 처리합니다. 따라서 Jackson을 사용하여 커스터마이즈할 수 있습니다.

의존성 추가하기

먼저, 프로젝트의 의존성에 Jackson 라이브러리를 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같은 의존성을 추가합니다:

<dependencies>
    <!-- other dependencies -->
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.12.3</version>
    </dependency>
</dependencies>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같은 의존성을 추가합니다:

dependencies {
    // other dependencies
    implementation 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.12.3'
}

커스터마이즈할 JSON Provider 작성하기

다음으로, JSON Provider를 작성하여 커스터마이즈할 수 있습니다. JSON Provider는 JSON을 직렬화하고 역직렬화하는 데 사용되는 클래스입니다.

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;

public class CustomJsonProvider extends JacksonJaxbJsonProvider {

    public CustomJsonProvider() {
        ObjectMapper mapper = new ObjectMapper();
        // JSON 결과에서 null 값 제외하기
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        // 커스터마이즈된 ObjectMapper 설정하기
        setMapper(mapper);
    }

}

위의 예시에서는 CustomJsonProvider 클래스를 작성하고, ObjectMapper를 사용하여 JSON 직렬화 및 역직렬화를 커스터마이즈하고 있습니다.

Jersey에 커스터마이즈된 JSON Provider 등록하기

마지막으로, 커스터마이즈된 JSON Provider를 Jersey에 등록하면 됩니다. 서버 구성 클래스 또는 Application 클래스에서 register() 메서드를 사용하여 등록합니다.

import org.glassfish.jersey.server.ResourceConfig;

public class MyApplication extends ResourceConfig {

    public MyApplication() {
        // 커스터마이즈된 JSON Provider 등록하기
        register(CustomJsonProvider.class);
    }

    // 리소스 및 기타 설정 등록하기
    // ...

}

위의 예시에서는 MyApplication 클래스에서 CustomJsonProvider를 등록하고 있습니다. 다른 리소스 및 설정도 register() 메서드를 사용하여 등록할 수 있습니다.

이제 Java Jersey에서 JSON 직렬화 및 역직렬화 작업을 커스터마이즈하는 방법을 알게 되었습니다. 이를 통해 더욱 유연하고 효율적인 웹 서비스를 구축할 수 있습니다.

참고 자료