测试getJSONArray是否为null

时间:2011-08-18 15:33:24

标签: java android json

我的代码提取了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)存在与否,我想在提取之前进行测试。我怎么能这样做?

3 个答案:

答案 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