[Java] JSONObject 에서 JSONArray 추출 및 반복문 구현하기

2022-08-04


Photo by Andres Molina on Unsplash

우선 최초의 데이터는 String 형태로 받아 왔다고 가정한다.


- 사용 라이브러리

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

- 소스 코드

	public void testjson () {
		
		//2 depth 위치에 제이슨 형태의 배열 존재하는 경우
		String request = "{\r\n" + 
				"    \"resultData\": {\r\n" + 
				"        \"jsonList\": [\r\n" + 
				"            {\r\n" + 
				"                \"test1\": \"test\",\r\n" + 
				"                \"test2\": \"test\"\r\n" + 
				"            },\r\n" + 
				"		{\r\n" + 
				"                \"test1\": \"test\",\r\n" + 
				"                \"test2\": \"test\"\r\n" + 
				"            }\r\n" + 
				"        ],\r\n" + 
				"        \"listCount\": 2\r\n" + 
				"    },\r\n" + 
				"    \"resultCode\": \"200\",\r\n" + 
				"    \"resultContent\": \"정상응답\"\r\n" + 
				"}";
		
		//최상위 json
		JSONParser jsonParser = new JSONParser();
		JSONObject resultJsonObj = new JSONObject(); //최초 깊이 1의 제이슨 객체
		try {
			resultJsonObj = (JSONObject) jsonParser.parse(request);
			System.out.println(resultJsonObj.toJSONString());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		JSONObject resultJsonObj2 = (JSONObject) resultJsonObj.get("resultData"); //깊이 2의 제이슨 객체
		JSONArray resultJsonArray = new JSONArray(); //깊이 2에 존재하는 제이슨 배열을 가져올 객체
		resultJsonArray = (JSONArray) resultJsonObj2.get("jsonList"); 	
		
		//배열에 있는 제이슨 객체를 받을 임시 제이슨 객체
		JSONObject tempJson = new JSONObject();
		for (int i = 0; i < resultJsonArray.size(); i++) { //배열에 있는 제이슨 수많큼 반복한다.
			tempJson = (JSONObject) resultJsonArray.get(i);	
			System.out.println(tempJson.toJSONString());
		}
	}

깊이가 2이기 때문에 최초 제이슨 객체를 두 번 만들어야 한다. 자신이 처리하는 제이슨 객체에 따라 코드를 조금씩 수정하면 된다.


- 출력내용

{"resultData":{"jsonList":[{"test2":"test","test1":"test"},{"test2":"test","test1":"test"}],"listCount":2},"resultCode":"200","resultContent":"정상응답"}
{"test2":"test","test1":"test"}
{"test2":"test","test1":"test"}

메인 이미지 출처 : Photo by Andres Molina on Unsplash