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

자바(Java)에서 Jackson API를 활용해 JsonNode를 ArrayNode로 변환하는 방법

JSON 데이터를 다룰 때 Jackson은 자바에서 가장 널리 사용되는 라이브러리 중 하나입니다. Jackson에서 JsonNode는 JSON 트리 모델(Tree Model)을 구성하는 모든 노드의 기본 클래스 역할을 하며, ArrayNode는 JSON 콘텐츠에서 매핑된 배열을 나타내는 노드 클래스입니다.

JsonNode를 ArrayNode로 변환하려면 명시적인 타입 캐스팅(typecasting)이 필요합니다. 이때 ObjectMapper 클래스의 readTree() 메서드로 JSON 문자열을 파싱하고, get() 메서드를 사용해 배열 노드의 특정 요소에 접근하여 값을 추출할 수 있습니다.

readTree() 메서드 문법

public JsonNode readTree(String content) throws IOException, com.fasterxml.jackson.core.JsonProcessingException

readTree() 메서드는 JSON 문자열을 입력받아 JsonNode 객체로 변환해 반환합니다. 반환된 노드가 실제로 배열 구조라면 ArrayNode로 캐스팅하여 반복 처리할 수 있습니다.

예제 코드

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.core.JsonProcessingException;

public class JSonNodeToArrayNodeTest {
    public static void main(String args[]) throws JsonProcessingException {
        String jsonStr = "{\"Technologies\" : [\"Java\", \"Scala\", \"Python\"]}";
        ObjectMapper mapper = new ObjectMapper();
        ArrayNode arrayNode = (ArrayNode) mapper.readTree(jsonStr).get("Technologies");
        if(arrayNode.isArray()) {
            for(JsonNode jsonNode : arrayNode) {
                System.out.println(jsonNode);
            }
        }
    }
}

실행 결과

"Java"
"Scala"
"Python"

참고 사항

잘못된 타입으로 캐스팅하면 ClassCastException이 발생할 수 있으므로, 캐스팅 전에 isArray()isObject() 같은 메서드로 노드 타입을 확인하거나 instanceof 연산자로 검증하는 것이 안전합니다. 위 예제에서도 isArray() 조건문을 통해 배열 노드인 경우에만 순회하도록 처리했습니다.