관리 메뉴

나만을 위한 블로그

[Android] JSONArray 안의 JSONArray 파싱하는 방법 본문

Android

[Android] JSONArray 안의 JSONArray 파싱하는 방법

참깨빵위에참깨빵_ 2021. 6. 26. 22:19
728x90
반응형

api에서 값을 받다 보면 아래와 같은 형태의 JSONArray가 오는 경우가 있다.

{
    "request_success_code": 200,
    "category": [
        {
            "android": [
                {
                    "name": "안드로이드",
                    "orientation" : "2021-06-20"
                },
                {
                    "name": "자바",
                    "orientation" : "2021-06-25"
                }
            ],
            "iOS": [
                {
                    "name": "아이폰",
                    "orientation" : "2021-06-23"
                },
                {
                    "name": "스위프트",
                    "orientation" : "2021-06-23"
                }
            ]
        }
    ]
}

 

category 안의 android라는 key에 들어있는 값들을 가져오려면 아래와 같은 형태로 파싱하면 된다.

 

JSONArray jsonArray = jsonObject.getJSONArray("category");
JSONObject inner_json = jsonArray.getJSONObject(0);
JSONArray android_array = inner_json.getJSONArray("android");
for (int i = 0; i < android_array.length(); i++)
{
   JSONObject android_obj = android_array.getJSONObject(i);
   name = assist_obj.getString("name");
   orientation = assist_obj.getString("orientation");

   MyItem item = new MyItem();
   item.setName(name);
   item.setOrientation(orientation);
   list.add(item);
}

 

category JSONArray 안의 첫 번째 JSONObject를 가져온다. 그리고 이 가져온 JSONObject에서 getJSONArray()로 가져오려는 JSONArray의 이름을 쓰고, for문으로 이 JSONArray의 길이만큼 반복하며 안에 있는 값들을 가져오면 된다.

객체를 만들고 set하는 부분은 리사이클러뷰에 보여주기 위한 처리의 일부니 무시해도 된다.

꼭 JSONArray를 이 방법대로 파싱해야 하는 건 아니다. 이렇게 파싱하면 안되는 JSONArray도 있으니 그것의 파싱법은 나중에 작성한다.

반응형
Comments