2016-01-28 48 views
-1

我試圖從JSONArray內部數組中獲取值,我能夠成功檢索整個JSON值到JSONArray但無法檢索JSONArray中的值。當我將JSONArray轉換爲JSONObject以獲取存儲在JSONArray中的值。它提供了錯誤:org.json.JSONException: No value for "banner"Json數組內部檢索值Android

這裏是JSON代碼,我驗證JSON代碼jsonlint.com而事實證明,JSON是驗證,

[ 
 
\t {"code":"banner","moduletitle":0, 
 
\t "banner": 
 
\t \t [ 
 
\t \t \t {"image":"http://imageurl"}, 
 
\t \t \t {"image":"http://imageurl"}, 
 
\t \t \t {"image":"http://imageurl"} 
 
\t \t ] 
 
\t \t 
 
\t } 
 
]

餘米試圖在3小時也沒有運氣得到這個。我新的JSON,不知道JSON如何實際工作,也讀取鄰接GSON Library獲得JSON值。這裏是我的Java代碼。

JSONArray jsonObj = null; 
 
      String image_url = ""; 
 
      String banner_code =""; 
 

 
      try { 
 
       jsonObj =new JSONArray(lib_function.getJSONUrl(jsontags.Top_Banner_JOSN_URLs)); 
 
       Log.d("value retrun :","" +jsonObj); 
 
       //---vlaue is coming and print in Log ----// 
 
       
 
      } catch (JSONException e) { 
 
       Log.v("Error in Parser :", " " + e); 
 
       Log.d("no value retrun :", "failed to convert"); 
 
      } 
 

 
      try{ 
 
        JSONObject jo = new JSONObject(); 
 
        JSONArray ja = new JSONArray(); 
 
        // populate the array 
 
        jo.put("arrayName", jsonObj); 
 

 

 
       JSONArray subArray = jo.getJSONArray("banner"); 
 
       image_url= subArray.getString(Integer.parseInt("image")); 
 

 

 
       Log.d("banner code",""+subArray); 
 
      }catch(Exception e) 
 
      { 
 
       Log.d("not working",""+e); 
 
      }

我folllow這個問題,但運氣: How to parse JSON Array inside another JSON Array in Android

如果有人建議,我在做錯誤的將是升值。或讓我知道,在哪裏我可以得到更多關於JSON的信息

UPDATE謝謝大家給他們寶貴的時間來回答我的愚蠢問題。所有答案都是正確的,但我只能接受一個答案。非常感謝所有

+1

我的JSONArray創建另一個JSONObject的價值和通過指定鍵獲取值。 –

回答

2

這裏:

JSONObject jo = new JSONObject(); 
JSONArray ja = new JSONArray(); 
// populate the array 
jo.put("arrayName", jsonObj); 

因爲解析jsonObjJSONArray所以沒必要創建新JSONArrayJSONObjectjsonObj提取它。刪除以上三行。

bannerJSONArray裏面JSONObject這是由jsonObjJSONArray載,獲得的是:

JSONObject jsonObject=jsonObj.optJSONObject(0); 
    JSONArray subArray = jsonObject.getJSONArray("banner"); 

    // get code key from `jsonObject` 
    String strCode=jsonObject.optString("code"); 

    // get all images urls from `subArray` 
    for(int index=0;index<subArray.length();index++){ 
     JSONObject imgJSONObject=subArray.optJSONObject(index); 
     // get image urls 
     String strImgURL=imgJSONObject.optString("image"); 

    } 

另外,如果jsonObj JSONArray包含多個的JSONObject的,然後使用for-loop迭代它。

+2

'jsonObj'就是這樣一個令人誤解的名字。這應該被重命名爲'jsonArray'出於可讀性的原因:) +1爲您的簡潔的答案 –

+0

**代碼**和**圖像裏面的旗幟**我怎樣才能獲得主題的價值?@ρяσѕρєяK –

+0

@AshuKumar:看我的編輯答案 –

1

我假設你有剩下的值可以訪問給你,所以只發布這個片段。 code=jsonObject.getString("code"); moduletitle=jsonObject.getString("moduletitle"); banner=jsonObject.getJSONArray("banner");

1
jsonObj =new JSONArray(lib_function.getJSONUrl(jsontags.Top_Banner_JOSN_URLs); 

從上面行,你會得到JSONArray。所以,現在環,並讓你的旗幟JSONArray.Again循環bannerArray,你會得到的圖片網址

+0

最可靠答案! @boyapati –

1

如果你想「形象」,這是JSON arrray比

String response = "your response"; 
try{ 
    JsonArray jAry = new JsonArray(response); 
    JsonObject jObj = jAry.getJsonObject(0); 

    JsonArray jsonBanner = jObj.getJsonArray("banner"); 
    JsonObject temp; 
    for(int i=0;i<jsonBanner.length;i++){ 
     temp = jsonBanner.getJsonObject(i); 
     String image = temp.optString("image"); 
    } 
}