2022-08-04
우선 최초의 데이터는 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