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 데이터도 손쉽게 파싱할 수 있습니다.