2016-10-26 60 views
0

我有以下Json。 linkJson從JsonArray獲取JsonArray

我想獲得image_hall_listimage_place_list全部url的值。
我試着用下面的代碼,但沒有任何結果。

JSONObject JO = new JSONObject(result); 
JSONArray ja = JO.getJSONArray("image_place_list"); //get the array 

for (int i = 0; i < ja.length(); i++) { 
    JSONObject jo = null; 
    try { 
     jo = ja.getJSONObject(i);      
     jsonurl.add(jo.getString("url")); 
    } catch (JSONException e1) { 
     e1.printStackTrace(); 
    } 
} 

回答

2

試試這個:

JSONObject JO = new JSONObject(result); 
JSONArray ja = JO.getJSONArray("place_list"); //get the array 
for (int i = 0; i < ja.length(); i++) { 
    JSONObject jo = null; 
    try { 
     jo = ja.getJSONObject(i); 
     JSONArray imageHallList = jo.getJSONArray("image_hall_list"); 
     for (int j = 0; j < imageHallList.length(); j++) { 
      JSONObject oneImageHallList = imageHallList.getJSONObject(j); 
      jsonurl.add(oneImageHallList.getString("url")); 
     } 
     JSONArray imagePlaceList = jo.getJSONArray("image_place_list"); 
     for (int j = 0; j < imagePlaceList.length(); j++) { 
      JSONObject oneImagePlaceList = imagePlaceList.getJSONObject(j); 
      jsonurl.add(oneImagePlaceList.getString("url")); 
     } 
    } catch (JSONException e1) { 
     e1.printStackTrace(); 
    } 
} 
0

使用嵌套的for-loop。首先獲取image_hall_listimage_place_list之前的項目,然後一旦存儲了值,通過獲取該JSON對象並遍歷JSON對象中的元素,循環遍歷image_hall_listimage_place_list

0

我推薦的一些方法。

一個提取給定對象的所有URL。

public ArrayList<String> getURLs(JSONObject jo, String key) throws JSONException { 
    List<String> urls = new ArrayList<String>(); 
    JSONArray arr = jo.getJSONArray(key); 
    for (int j = 0; j < arr.length(); j++) { 
     JSONObject innerObj = arr.getJSONObject(j); 
     urls.add(innerObj.getString("url")); 
    } 
    return urls; 
} 

然後,您可以對相應的鍵使用兩次。如果您的result變量直接來自該鏈接,則還需要先獲得"place_list"

try { 
    JSONObject jsonResponse = new JSONObject(result); 
    JSONArray ja = jsonResponse.getJSONArray("place_list"); //get the array 

    for (int i = 0; i < ja.length(); i++) { 
     JSONObject jo = ja.getJSONObject(i);      
     jsonurl.addAll(getURLs(jo, "image_hall_list")); 
     jsonurl.addAll(getURLs(jo, "image_place_list")); 
    } 
} catch (JSONException e1) { 
    e1.printStackTrace(); 
}