2016-10-26 2 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ループを使用します。最初にimage_hall_listimage_place_listより前の項目を取得し、値を保存したら、image_hall_listimage_place_listをJSONオブジェクトを取得し、JSONオブジェクトの要素をループしてループします。

0

私はいくつかの方法をお勧めします。

1つは、特定のオブジェクトのすべての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; 
} 

次に、それぞれのキーで2回使用できます。 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(); 
} 
関連する問題