数组内的Json数组检索值Android

时间:2016-01-28 11:40:01

标签: java android arrays json jsonobject

我试图从数组中的JSONArray获取值,我能够成功地将整个JSON值检索到JSONArray但无法检索JSONArray内的值。当我将JSONArray转换为JSONObject以获取存储在JSONArray内的值时。它给出了错误:org.json.JSONException: No value for "banner"

这是JSON代码,我用jsonlint.com验证了JSON代码,它显示JSON是Validate,



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




我试图从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);
            }




我问这个问题,但运气: How to parse JSON Array inside another JSON Array in Android

如果有人建议,我做错了将会很感激。或者让我知道,我可以在哪里获得有关json的更多信息

更新非常感谢您花时间回答我的愚蠢问题。所有答案都是正确的,但我只接受一个答案。非常感谢所有

4 个答案:

答案 0 :(得分:2)

下面:

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

因为解析jsonObj JSONArray所以不需要创建新的JSONArrayJSONObject来从jsonObj中提取它。删除以上三行。

banner JSONArray位于JSONObject内,jsonObj JSONArray包含,将其设为:

   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进行迭代。

答案 1 :(得分:1)

我假设您可以访问其余的值,因此只发布此代码段。 code=jsonObject.getString("code"); moduletitle=jsonObject.getString("moduletitle"); banner=jsonObject.getJSONArray("banner");

答案 2 :(得分:1)

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

从上面你会得到JSONArray。所以现在循环它,让你的旗帜JSONArray.Again循环bannerArray,你会得到图像Urls

答案 3 :(得分:1)

如果你想要json arrray中的“image”的值而不是

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