개발이야기/Java

[Java] ObjectMapper 활용해서 객체를 JSON으로 JSON을 객체로 변환하기

후린개발자 2023. 12. 1.
반응형

ObjectMapper 클래스는 Jackson 라이브러리에서 제공하는 클래스로, Java 객체를 JSON 문자열로 직렬화하거나 JSON 문자열을 Java 객체로 역직렬화하는 데 사용됩니다. 아래에서 writeValueAsString 및 readValue 메서드에 대한 간단한 설명과 사용법을 말씀드리겠습니다.

 

 

writeValueAsString 메서드

- Java 객체를 JSON 문자열로 변환하는 데 사용됩니다.

 

ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(object);

 

 

- objectMapper: ObjectMapper 인스턴스를 생성합니다.


- object: JSON으로 직렬화할 Java 객체입니다.


- jsonString: Java 객체를 표현하는 JSON 문자열입니다.

 

 

readValue 메서드

- JSON 문자열을 Java 객체로 역직렬화하는 데 사용됩니다.

 

ObjectMapper objectMapper = new ObjectMapper();
T object = objectMapper.readValue(jsonString, T.class);

 

 

- objectMapper: ObjectMapper 인스턴스를 생성합니다.


- jsonString: 역직렬화할 JSON 문자열입니다.


- T: 역직렬화될 Java 객체의 클래스입니다.

 

 

예제코드

아래 소스코드는 Java 객체, Map, List, 배열에 대해서 JSON으로 변환 및 역직렬화를 하는 코드입니다. ObjectMapper를 통해서 데이터 유형을 간편하게 변환하고 Java와 JSON 간의 데이터 교환을 단순하게 해주는 유용하게 사용하는 클래스입니다.

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.databind.ObjectMapper;

public class TEST {

    public static void main(String[] args) {
        // 예제로 사용할 데이터
        Person person1 = new Person("John", 30);
        Person person2 = new Person("Jane", 25);

        Map<String, Object> dataMap1 = new HashMap<>();
        dataMap1.put("name", "John");
        dataMap1.put("age", 30);
        dataMap1.put("occupation", "Engineer");
        dataMap1.put("email", "john@example.com");

        Map<String, Object> dataMap2 = new HashMap<>();
        dataMap2.put("name", "Jane");
        dataMap2.put("age", 25);
        dataMap2.put("occupation", "Doctor");
        dataMap2.put("email", "jane@example.com");

        List<String> namesList = new ArrayList<>();
        namesList.add("John");
        namesList.add("Jane");
        namesList.add("Bob");

        String[] colorsArray = {"Red", "Green", "Blue"};

        // ObjectMapper 생성
        ObjectMapper objectMapper = new ObjectMapper();

        try {
            // Java 객체를 JSON 문자열로 변환
            String personJson1 = objectMapper.writeValueAsString(person1);
            String personJson2 = objectMapper.writeValueAsString(person2);
            System.out.println("Person JSON 문자열 1: " + personJson1);
            System.out.println("Person JSON 문자열 2: " + personJson2);

            // Map을 JSON 문자열로 변환
            String mapJson1 = objectMapper.writeValueAsString(dataMap1);
            System.out.println("Map JSON 문자열 1: " + mapJson1);
            // JSON 문자열을 원래 타입으로 다시 변환
            Map<String, Object> reconstructedMap1 = objectMapper.readValue(mapJson1, Map.class);
            System.out.println("Map 1: " + reconstructedMap1);

            String mapJson2 = objectMapper.writeValueAsString(dataMap2);
            System.out.println("Map JSON 문자열 2: " + mapJson2);
            Map<String, Object> reconstructedMap2 = objectMapper.readValue(mapJson2, Map.class);
            System.out.println("Map 2: " + reconstructedMap2);

            // List를 JSON 문자열로 변환
            String listJson = objectMapper.writeValueAsString(namesList);
            System.out.println("List JSON 문자열: " + listJson);
            // JSON 문자열을 원래 타입으로 다시 변환
            List<String> reconstructedList = objectMapper.readValue(listJson, List.class);
            System.out.println("List: " + reconstructedList);

            // 배열을 JSON 문자열로 변환
            String arrayJson = objectMapper.writeValueAsString(colorsArray);
            System.out.println("Array JSON 문자열: " + arrayJson);
            // JSON 문자열을 원래 타입으로 다시 변환
            String[] reconstructedArray = objectMapper.readValue(arrayJson, String[].class);
            System.out.println("Array: " + Arrays.toString(reconstructedArray));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
    
    public int getAge() {
        return age;
    }
}

 

 


 

소스코드 결과

반응형

댓글

💲 추천 글