본문 바로가기
  • Thank you for visiting.....
IT 지식

Java의 ObjectMapper 이해

by HyunSoooo 2024. 3. 26.
728x90

 

Java 개발 영역에서, 특히 JSON 데이터를 처리할 때 ObjectMapper 는 개발자가 많이 이용하는 도구 입니다.
fastxml.jackson 라이브러리의 일부인 ObjectMapper는 Java 객체와 JSON 문자열 간 을 변환하는 간단하고 효율정인  바업입니다.

 

ObjectMapper란?

ObjectMapper 는 Java 개체를 JSON 형식으로 직렬화 하고 JSON 문자열을 Java 개체로 역직렬화하는데 사용되는 jackson 라이브러리의 클래스 입니다. 간단히 말해서 Java 개체를 가져와서 JSON 문자열로 변환하거나 JSON 문자열을 가져와서 Java 개체를 구성할 수 있습니다. 서로 다른 데이터 형식간에 변환하는 이러한 프로세스를 데이터 바인딩 이라고 합니다.

 

ObjectMapper 의 기능

  • 직렬화 및 역직렬화 : ObjectMapper 의 핵심 기능에는 Java 개체를 JSON 으로 또는 그 반대로 변환하는 기능이 포함됩니다. 이는 데이터 교환이 일반적으로 JSON 형식으로 발생하는 RESTful API 에 매우 유용합니다.
  • 사용자 정의 : ObjectMapper 를 사용하면 직렬화 및 역직렬화 프로세스를 광범위하게 사용자 정의할 수 있습니다. 개발자는 속성 포함, 날짜 형식 , null 값 처리 등의 측면을 포함하여 Java 개체가 JSON 으로 변환되는 방식을 제어할 수 있습니다.
  • 성능 : ObjectMapper 를 포함한 Jackson 라이브러리는 JSON 데이터 처리 속도와 효율성으로 잘 알려져 있고 고성능 애플리케이션에 선호되는 선택입니다.
  • 주석 지원 : ObjectMapper 는 Java 객체가 직렬화 되거나 역직렬화 되는 방식을 구성하는 데 사용 할 수있는 주석을 지원 합니다. @JsonProperty , @JsonIgnore 및 @JsonFormat 과 같은 주석은 데이터 바인딩 프로세스를 세밀하게 제어할 수 있습니다.

Java 에서 ObjectMapper 사용하기

JSON 으로 직렬화 하고 JSON 문자열을 다시 Java 개체로 역직렬화하는 데 ObjectMapper 를 사용하는 방버에 대한 기본 예입니다.

 

직렬화

import com.fasterxml.jackson.databind.ObjectMapper;

public class SerializeExample {
    public static void main(String[] args) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            Person person = new Person("John Doe", 30);
            String json = objectMapper.writeValueAsString(person);
            System.out.println(json);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

실행 결과 :

 

역직렬화

import com.fasterxml.jackson.databind.ObjectMapper;

public class DeserializeExample {
    public static void main(String[] args) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            String json = "{\"name\":\"John Doe\",\"age\":30}";
            Person person = objectMapper.readValue(json, Person.class);
            System.out.println(person.getName() + ", " + person.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

실행결과 :

 

모범 사례

  • ObjectMapper 재사용 : 가능할 때마다 ObjectMapper 인스턴스를 재사용하는 것이 좋습니다. ObjectMapper 인스턴스는 스레드로부터 안전하며 생성 비용이 상당히 많이 들 수 있습니다. 재사용 하면 메모리 오버헤드가 줄어들고 성능이 향상됩니다.
  • 사용자 정의 구성 : 직렬화 및 역직렬화를 사용자 정의하는 ObjectMapper 기능을 황용하여 적절한 구성은 애플리케이션의 데이터 처리를 크게 단순화할 수 있습니다.

 

 

728x90