[java] Jackson의 JSON 직렬화와 역직렬화에 대해 설명해주세요.

JSON(JavaScript Object Notation)은 데이터 교환을 위한 경량의 형식입니다. Java에서는 JSON을 처리하기 위해 다양한 라이브러리들이 있지만, 그 중 하나인 Jackson은 널리 사용되며 강력한 기능을 제공합니다. 이번 블로그 포스트에서는 Java에서 Jackson을 사용하여 JSON 데이터를 직렬화하고 역직렬화하는 방법에 대해 알아보겠습니다.

1. Jackson 라이브러리 추가

Jackson을 사용하기 위해 먼저 Maven 또는 Gradle과 같은 빌드 도구를 사용하여 Jackson 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml에 다음 의존성을 추가합니다.

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.12.3</version>
</dependency>

Gradle을 사용하는 경우 build.gradle에 다음 의존성을 추가합니다.

implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3'

의존성을 추가한 후, 프로젝트를 빌드하여 Jackson을 사용할 준비를 합니다.

2. 객체를 JSON으로 직렬화하기

Jackson을 사용하여 객체를 JSON 형식으로 직렬화하기 위해서는 다음과 같은 단계를 따릅니다.

2.1. 직렬화할 클래스 작성

먼저, 직렬화할 Java 클래스를 작성합니다. 이 예제에서는 Person 클래스를 사용하겠습니다.

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 필요한 getter와 setter 메서드를 작성합니다.
}

2.2. 객체를 JSON으로 직렬화하기

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) throws Exception {
        Person person = new Person("John Doe", 30);

        // ObjectMapper를 사용하여 객체를 JSON으로 직렬화합니다.
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(person);

        System.out.println(json);
    }
}

위 코드에서는 ObjectMapper 클래스의 writeValueAsString() 메서드를 사용하여 객체를 JSON 문자열로 직렬화합니다. 직렬화된 JSON 문자열은 json 변수에 저장되고, 이를 출력하면 다음과 같은 결과를 얻을 수 있습니다.

{"name":"John Doe","age":30}

3. JSON을 객체로 역직렬화하기

JSON을 객체로 역직렬화하기 위해서는 다음과 같은 단계를 따릅니다.

3.1. 역직렬화할 클래스 작성

JSON을 역직렬화할 Java 클래스를 작성합니다. 이 예제에서는 Person 클래스를 사용합니다. 이미 위에서 작성한 Person 클래스를 그대로 사용합니다.

3.2. JSON을 객체로 역직렬화하기

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) throws Exception {
        String json = "{\"name\":\"John Doe\",\"age\":30}";

        // ObjectMapper를 사용하여 JSON을 객체로 역직렬화합니다.
        ObjectMapper objectMapper = new ObjectMapper();
        Person person = objectMapper.readValue(json, Person.class);

        System.out.println(person.getName());
        System.out.println(person.getAge());
    }
}

위 코드에서는 ObjectMapper 클래스의 readValue() 메서드를 사용하여 JSON을 객체로 역직렬화합니다. 역직렬화된 객체는 Person 클래스의 인스턴스로 저장되고, 이를 통해 필요한 값에 접근할 수 있습니다. 위 예제에서는 getName()getAge() 메서드를 사용하여 객체의 속성 값을 출력합니다.

John Doe
30

위의 코드 예제를 통해 Jackson을 사용하여 Java에서 JSON 직렬화와 역직렬화를 수행하는 방법을 알아보았습니다. 이를 통해 웹 애플리케이션, REST API 등에서 JSON 데이터를 효율적으로 처리할 수 있습니다.

참고 자료