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

Java에서 Gson 라이브러리를 사용해 JSON을 트리 모델로 구문 분석하는 방법

Gson 라이브러리를 사용하면 JSON 문자열을 트리 모델(Tree Model) 형태로 구문 분석할 수 있습니다. JsonParser를 활용하면 JSON 문자열을 JsonElement 타입의 트리 모델로 변환할 수 있습니다.

변환된 JsonElement 객체에는 다음과 같은 유용한 메서드가 제공됩니다.

  • getAsJsonObject(): 요소를 JsonObject 타입으로 반환합니다.
  • getAsJsonArray(): 요소를 JsonArray 타입으로 반환합니다.

문법(Syntax)

public JsonObject getAsJsonObject()
public JsonArray getAsJsonArray()

예제(Example)

import java.util.List;
import com.google.gson.*;

public class JsonTreeModelTest {
    public static void main(String args[]) {
        String jsonStr = "{\"name\":\"Adithya\",\"age\":20,\"year of passout\":2005,\"subjects\": [\"MATHEMATICS\",\"PHYSICS\",\"CHEMISTRY\"]}";
        
        JsonParser jsonParser = new JsonParser();
        JsonElement jsonElement = jsonParser.parse(jsonStr);
        
        if(jsonElement.isJsonObject()) {
            JsonObject studentObj = jsonElement.getAsJsonObject();
            System.out.println("Student Info:");
            System.out.println("Name is: " + studentObj.get("name"));
            System.out.println("Age is: " + studentObj.get("age"));
            System.out.println("Year of Passout: " + studentObj.get("year of passout"));
            
            JsonArray jsonArray = studentObj.getAsJsonArray("subjects");
            System.out.println("Subjects:" + jsonArray);
        }
    }
}

// Student 클래스
class Student {
    private String name;
    private int age;
    private int passoutYear;
    private List subjects;
    
    public Student(String name, int age, int passoutYear, List subjects) {
        this.name = name;
        this.age = age;
        this.passoutYear = passoutYear;
        this.subjects = subjects;
    }
    
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", year of passout=" + passoutYear +
                ", subjects=" + subjects +
                '}';
    }
}

실행 결과(Output)

Student Info:
Name is: "Adithya"
Age is: 20
Year of Passout: 2005
Subjects:["MATHEMATICS","PHYSICS","CHEMISTRY"]

참고 사항

Gson 2.8.6 버전부터는 위 예제처럼 JsonParser 인스턴스를 생성하고 parse() 메서드를 호출하는 방식이 deprecated(사용 중단 권고)되었습니다. 최신 버전에서는 아래와 같이 정적(static) 메서드를 직접 호출하는 것이 권장됩니다.

// 기존 방식 (deprecated)
JsonElement element = new JsonParser().parse(jsonStr);

// 권장 방식
JsonElement element = JsonParser.parseString(jsonStr);

또한 isJsonObject(), isJsonArray() 같은 타입 확인 메서드를 먼저 호출하면, JSON 구조에 따라 안전하게 캐스팅 오류 없이 데이터를 처리할 수 있습니다. 트리 모델 방식은 JSON 구조를 미리 알기 어렵거나 동적으로 탐색해야 하는 경우에 특히 유용합니다.