Server/Spring
json list 안에 list 읽기
selfstarter
2019. 7. 15. 14:31
json list 안에 list 읽기
- json 구조는 아래처럼 list 안에 list가 있는 형태일 때, JSONArray에서 해당 list Object를 JSONArray로 변경해줘야 값을 읽을 수 있다.
- org.json.simple.JSONArray를 사용하지 않고 org.json.JSONArray를 사용해도 쉽게 바꿀 수 있다.
- org.json.JSONArray을 사용하면 org.json.simple.JSONParser 말고 다른 방식으로 json파일을 읽어와야 한다(불편하고 다른방법을 찾지 못해서 siimple json 사용)
[
{
"id" : 1,
"list" : [{ "id": 100, "name":"aaa"}, { "id": 101, "name":"bbb"}, { "id": 102, "name":"ccc"} ]
},
{
"id" : 2,
"list" : [{ "id": 200, "name":"aaa"}, { "id": 201, "name":"bbb"}, { "id": 202, "name":"ccc"} ]
},
]
Code
- fileName은 resource 아래에 있다.
- resource 아래 위치를 가져오는 방법은 여기 참조
FileReader fr = new FileReader(fileName); // 파일 입력 스트림 생성
JSONParser jsonParse = new JSONParser();
JSONArray jsonArray = (JSONArray)jsonParse.parse(fileReader); // json 파일을 읽어서 JSONArray에 저장
for (int i = 0; i < jsonArray.size(); ++i) {
JSONObject jo = (JSONObject)jsonArray.get(i); // 첫번째 list를 꺼낸다
String id = (String)jsonObject.get("id");
JSONArray arrays = (JSONArray)jo.get("list") // list 안의 list를 가져온다
for (Object obj : arrays) {
JSONObject childObj = (JSONObject)obj;
System.out.println(childObj.get("id"));
System.out.println(childObj.get("name"));
}
}