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

Java에서 중첩된 JSON 객체를 파싱하는 방법

JSON(JavaScript Object Notation)경량(lightweight)이며 텍스트 기반이고 언어에 독립적인 데이터 교환 형식입니다. JSON은 객체(Object)배열(Array)이라는 두 가지 구조화된 타입을 표현할 수 있습니다.

JSONArray는 문자열(String)로부터 텍스트를 파싱하여 벡터(vector)와 유사한 객체를 생성합니다. 중첩된 JSON 객체는 JSONArray의 getString(index) 메서드를 사용하여 파싱할 수 있습니다. 이 메서드는 getJSONString(index).getString()을 간편하게 호출할 수 있도록 만든 편의 메서드로, 지정된 위치에 있는 문자열 값을 반환합니다.

문법(Syntax)

String getString(int index)

예제 코드

아래 예제에서는 중첩된 JSON 문자열을 JSONObject로 변환한 후, JSONArray를 순회하면서 각 객체의 username 값을 추출하는 방법을 보여줍니다.

import java.util.*;
import org.json.*;

public class NestedJSONObjectTest {
    public static void main(String args[]) {
        String jsonDataString = "{userInfo : [{username:abc123}, {username:xyz123}, {username:pqr123}, {username:mno123}, {username:jkl123}]}";
        JSONObject jsonObject = new JSONObject(jsonDataString);
        List<String> list = new ArrayList<String>();
        JSONArray jsonArray = jsonObject.getJSONArray("userInfo");
        for(int i = 0; i < jsonArray.length(); i++) {
            list.add(jsonArray.getJSONObject(i).getString("username"));
            System.out.println(jsonArray.getJSONObject(i).getString("username")); // 사용자 이름 출력
        }
    }
}

실행 결과(Output)

abc123
xyz123
pqr123
mno123
jkl123

코드 설명

위 코드의 동작 과정은 다음과 같습니다.

1. JSON 형식의 문자열을 JSONObject 생성자에 전달하여 객체로 변환합니다.
2. getJSONArray("userInfo") 메서드를 호출하여 "userInfo" 키에 해당하는 배열을 가져옵니다.
3. 반복문을 통해 배열의 각 요소에 접근하고, getJSONObject(i).getString("username")으로 중첩된 객체 내부의 username 값을 추출합니다.
4. 추출한 값은 ArrayList에 저장하거나 콘솔에 출력할 수 있습니다.

이처럼 JSONArray와 JSONObject의 다양한 메서드를 조합하면 계층적으로 중첩된 JSON 데이터도 손쉽게 파싱할 수 있습니다.