我的代码提取了JSONObject的结果,但是,有时候,i值不会从1开始,我有这样的错误:
org.json.JSONException: No value for 1
我的代码:
JSONObject obj = new JSONObject(result);
for(int i=1;i<=14;i++) {
JSONArray arr = obj.getJSONArray(""+i);
extraction(arr, i);
}
如果目标代码(i)存在与否,我想在提取之前进行测试。我怎么能这样做?
答案 0 :(得分:12)
使用obj.optJSONArray(name)
如果名称不存在,则响应将为null。
JSONObject obj = new JSONObject(result);
for(int i=1;i<=14;i++) {
JSONArray arr = obj.optJSONArray(""+i);
if(arr != null) {
extraction(arr, i);
}
}
答案 1 :(得分:4)
使用JSONObject.optJSONArray(key).
如文档中所示,如果密钥不存在,则返回null。
此外,您的JSON结构似乎很奇怪。为什么对象中有数字排序键?不应该是一个数组?
答案 2 :(得分:0)
您不能使用.length()来检查JSONArray的返回null。 使用.isNull(“xxx”)代替.length(),示例如下:
JSONArray magazineLove = null;
if(!socialBook.getJSONObject(i).isNull("MagazineLove"))
{
magazineLove = socialBook.getJSONObject(i).getJSONArray("MagazineLove");
}
Aey.Sakon