selfstarter

json list 안에 list 읽기 본문

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"));
    }
}
Comments