JAVA

[JAVA] Jackson ObjectMapper란?

인생아 2024. 11. 9. 00:14
반응형

ObjectMapper란?

ObjectMapperJackson 라이브러리에서 제공하는 클래스로 JSON 형식의 데이터를 Java 객체로 변환하거나, Java 객체를 JSON 형식으로 변환할 수 있는 기능을 제공합니다. 이 라이브러리를 사용하면 JSON 처리가 매우 간편하며 직관적이기 때문에 애플리케이션 개발 시 유용합니다.

JSON 문자열을 Java 객체로 변환하기 - readValue 메서드

readValue 메서드는 JSON 문자열을 Java 객체로 변환하는 데 사용됩니다. 이 과정을 역직렬화라고도 하며, JSON 데이터에서 Java 객체로 데이터를 불러오고자 할 때 주로 사용됩니다.

JSON 문자열을 Java 객체로 변환하기

먼저, Java에서 JSON 문자열을 역직렬화하여 Person 객체로 변환하는 예제를 살펴보겠습니다. 이를 위해 Person 클래스를 정의해 보겠습니다.

import com.fasterxml.jackson.databind.ObjectMapper;

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

    // 기본 생성자와 Getter, Setter 추가
    public Person() {}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

public class Main {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"홍길동\", \"age\":30, \"city\":\"서울\"}";

        ObjectMapper objectMapper = new ObjectMapper();
        try {
            Person person = objectMapper.readValue(jsonString, Person.class);
            System.out.println("이름: " + person.getName());
            System.out.println("나이: " + person.getAge());
            System.out.println("도시: " + person.getCity());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

이 예제에서는 JSON 문자열 jsonString을 Person 객체로 변환하여 name, age, city 속성에 접근하는 과정을 보여줍니다. ObjectMapper의 readValue 메서드를 통해 JSON 데이터를 Java 객체로 손쉽게 역직렬화할 수 있습니다.

Java 객체를 JSON 문자열로 변환하기 - writeValueAsString 메서드

writeValueAsString 메서드는 Java 객체를 JSON 문자열로 변환할 때 사용됩니다. 이 과정은 직렬화라고 하며, Java 객체의 데이터를 JSON 형식으로 저장할 때 사용됩니다.

예제 코드: Java 객체를 JSON 문자열로 변환하기

Java 객체를 JSON 문자열로 직렬화하는 예제를 보겠습니다.

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("홍길동");
        person.setAge(30);
        person.setCity("서울");

        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String jsonString = objectMapper.writeValueAsString(person);
            System.out.println("JSON 문자열: " + jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

이 예제에서는 Person 객체의 데이터를 JSON 형식의 문자열로 변환하여 출력합니다. writeValueAsString 메서드를 사용해 손쉽게 Java 객체를 JSON 문자열로 직렬화할 수 있습니다.

JSON 파일 입출력 다루기

ObjectMapper는 JSON 파일을 읽거나 쓰는 기능도 제공합니다. JSON 파일을 Java 객체로 변환하거나, 반대로 Java 객체를 JSON 파일로 저장할 수 있습니다.

JSON 파일을 Java 객체로 변환하기

아래 예제에서는 JSON 파일에서 데이터를 읽어와 Java 객체로 변환합니다.

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;

public class Main {
    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            Person person = objectMapper.readValue(new File("person.json"), Person.class);
            System.out.println("이름: " + person.getName());
            System.out.println("나이: " + person.getAge());
            System.out.println("도시: " + person.getCity());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 코드는 person.json 파일을 읽어와 Person 객체로 변환합니다. 파일 입출력을 통해 JSON 데이터를 처리할 수 있습니다.

Java 객체를 JSON 파일로 저장하기

아래 코드는 Java 객체를 JSON 파일로 저장하는 예제입니다.

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("홍길동");
        person.setAge(30);
        person.setCity("서울");

        ObjectMapper objectMapper = new ObjectMapper();
        try {
            objectMapper.writeValue(new File("person.json"), person);
            System.out.println("person.json 파일로 저장되었습니다.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

이 코드는 Person 객체를 JSON 형식으로 person.json 파일에 저장합니다. 이를 통해 JSON 파일로 데이터를 쉽게 직렬화할 수 있습니다.

기본적인 직렬화와 역직렬화 예제

JSON 문자열을 Java 객체로 역직렬화하거나, Java 객체를 JSON 문자열로 직렬화할 때 ObjectMapper는 다양한 데이터 형식을 지원합니다.

List 형태의 JSON을 Java 리스트로 변환하기

다음 예제에서는 JSON 배열을 Java 리스트로 변환하는 예제를 살펴보겠습니다.

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        String jsonString = "[{\"name\":\"홍길동\", \"age\":30, \"city\":\"서울\"}, {\"name\":\"이순신\", \"age\":45, \"city\":\"부산\"}]";

        ObjectMapper objectMapper = new ObjectMapper();
        try {
            List<Person> people = objectMapper.readValue(jsonString, new TypeReference<List<Person>>() {});
            for (Person person : people) {
                System.out.println("이름: " + person.getName() + ", 나이: " + person.getAge() + ", 도시: " + person.getCity());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

이 예제에서는 JSON 배열을 Java 리스트로 변환하여 여러 Person 객체를 처리합니다. TypeReference를 사용하여 제네릭 타입의 리스트로 역직렬화합니다.

참고 사이트

반응형