Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)에서 Jackson을 사용해 JSON 배열을 List로 변환하는 방법

Jackson은 Java 기반 라이브러리로, Java 객체를 JSON으로 변환하거나 그 반대로 변환할 때 널리 사용됩니다. Jackson API는 다른 API에 비해 처리 속도가 빠르고 메모리 사용량이 적어 대용량 객체를 다룰 때 특히 유리합니다.

JSON 배열을 List로 변환하려면 ObjectMapper 클래스를 사용하면 됩니다. 이 클래스가 제공하는 readValue() 메서드는 첫 번째 인수로 전달받은 JSON 문자열을 두 번째 인수로 지정된 클래스 타입의 객체로 변환해 줍니다.

예제 코드

import java.util.*;
import com.fasterxml.jackson.databind.*;

public class JSONArrayToListTest1 {
    public static void main(String args[]) {
        String jsonStr = "[\"INDIA\", \"AUSTRALIA\", \"ENGLAND\", \"SOUTH AFRICA\", \"WEST INDIES\"]";
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            List<String> countries = objectMapper.readValue(jsonStr, List.class);
            System.out.println("The countries are:\n " + countries);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

실행 결과

The countries are:
[INDIA, AUSTRALIA, ENGLAND, SOUTH AFRICA, WEST INDIES]

TypeReference를 활용한 타입 안전한 변환

위 예제처럼 List.class를 직접 지정하면 제네릭 타입 정보가 소실되어 컴파일러 경고(unchecked warning)가 발생할 수 있습니다. 이 경우 TypeReference를 사용하면 원하는 제네릭 타입을 명확하게 지정할 수 있어 더 안전합니다.

import com.fasterxml.jackson.core.type.TypeReference;

List<String> countries = objectMapper.readValue(
        jsonStr,
        new TypeReference<List<String>>() {}
);

의존성 추가 방법

Jackson을 프로젝트에서 사용하려면 Maven 기준으로 다음 의존성을 추가하면 됩니다.

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

이처럼 Jackson의 ObjectMapper를 활용하면 JSON 배열 문자열을 몇 줄의 코드만으로 간단하게 Java List 객체로 변환할 수 있습니다.