Json 数组内数组检索值 Android
Json array inside array retrieve values Android
我试图从数组中的 JSONArray
中获取值,我能够成功地将整个 JSON 值检索到 JSONArray
中,但无法检索 JSONArray
中的值。当我将 JSONArray
转换为 JSONObject
以获取存储在 JSONArray
中的值时。它给出错误:org.json.JSONException: No value for "banner"
这是 JSON 代码,我用 jsonlint.com 验证了 JSON 代码,它显示 JSON 是有效的,
[
{"code":"banner","moduletitle":0,
"banner":
[
{"image":"http://imageurl"},
{"image":"http://imageurl"},
{"image":"http://imageurl"}
]
}
]
我想在 3 小时内完成,但没有成功。我是 JSON 的新手,不知道 JSON 实际上是如何工作的,还阅读了 GSON 库 以获得 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
的信息
UPDATE 非常感谢大家花宝贵的时间回答我的愚蠢问题。所有答案都是正确的,但我只能接受一个答案。非常感谢大家
这里:
JSONObject jo = new JSONObject();
JSONArray ja = new JSONArray();
// populate the array
jo.put("arrayName", jsonObj);
因为解析 jsonObj
JSONArray
所以不需要创建新的 JSONArray
和 JSONObject
来从 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
对其进行迭代。
我假设您可以访问其余值,因此只发布此代码段。
code=jsonObject.getString("code");
moduletitle=jsonObject.getString("moduletitle");
banner=jsonObject.getJSONArray("banner");
jsonObj =new JSONArray(lib_function.getJSONUrl( jsontags.Top_Banner_JOSN_URLs);
从上一行您将获得 JSONArray。所以现在循环它并得到你的横幅 JSONArray.Again 循环 bannerArray 你将得到图像 Urls
如果你想要"image"的值在json数组中而不是
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");
}
}
我试图从数组中的 JSONArray
中获取值,我能够成功地将整个 JSON 值检索到 JSONArray
中,但无法检索 JSONArray
中的值。当我将 JSONArray
转换为 JSONObject
以获取存储在 JSONArray
中的值时。它给出错误:org.json.JSONException: No value for "banner"
这是 JSON 代码,我用 jsonlint.com 验证了 JSON 代码,它显示 JSON 是有效的,
[
{"code":"banner","moduletitle":0,
"banner":
[
{"image":"http://imageurl"},
{"image":"http://imageurl"},
{"image":"http://imageurl"}
]
}
]
我想在 3 小时内完成,但没有成功。我是 JSON 的新手,不知道 JSON 实际上是如何工作的,还阅读了 GSON 库 以获得 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
的信息UPDATE 非常感谢大家花宝贵的时间回答我的愚蠢问题。所有答案都是正确的,但我只能接受一个答案。非常感谢大家
这里:
JSONObject jo = new JSONObject();
JSONArray ja = new JSONArray();
// populate the array
jo.put("arrayName", jsonObj);
因为解析 jsonObj
JSONArray
所以不需要创建新的 JSONArray
和 JSONObject
来从 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
对其进行迭代。
我假设您可以访问其余值,因此只发布此代码段。
code=jsonObject.getString("code");
moduletitle=jsonObject.getString("moduletitle");
banner=jsonObject.getJSONArray("banner");
jsonObj =new JSONArray(lib_function.getJSONUrl( jsontags.Top_Banner_JOSN_URLs);
从上一行您将获得 JSONArray。所以现在循环它并得到你的横幅 JSONArray.Again 循环 bannerArray 你将得到图像 Urls
如果你想要"image"的值在json数组中而不是
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");
}
}