1

我有很多从 Web 获取数据的链接,因此我想使用循环来检索每个 URL 的数据,但是我在将 JSObject 作为数组时遇到了麻烦。

JSONObject[] jsObjectallnewstype;
JSONArray[] jsonArrayallnewstype = null;

for(int i = 0; i < categories.length(); i++)
     {
        JSONObject c = categories.getJSONObject(i);
        // Storing each json item in variable
        String title = c.getString(TAG_TITLE);
        String url = c.getString(TAG_URL);  
        jsObjectallnewstype[i] = JSONFunction.getnewstype(title, url); //java.lang.NullPointerException                 
        jsonArrayallnewstype[i] = jsobjectallnewstype[i].getJSONArray(TAG_NEWLIST);
 }

jsObjectallnewstype[i]尽管日志显示 JSONFunction.getnewstype 成功检索数据,但此行出现空错误。而且我也担心第二行jsonArrayallnewstype[i]也会导致同样的错误。

那么 JSObject 不能作为数组放置吗?如果是这样,有什么选择?

4

1 回答 1

2

要修复您当前的代码,您需要初始化您的数组。这就是您获得 NPE 的原因:

    JSONObject[] jsObjectallnewstype = new JSONObject[categories.length()];
    JSONArray[] jsonArrayallnewstype = new JSONArray[categories.length()];

    for(int i = 0; i < categories.length(); i++)
         {
            JSONObject c = categories.getJSONObject(i);
            // Storing each json item in variable
            String title = c.getString(TAG_TITLE);
            String url = c.getString(TAG_URL);  
            jsObjectallnewstype[i] = JSONFunction.getnewstype(title, url); //java.lang.NullPointerException                 
            jsonArrayallnewstype[i] = jsobjectallnewstype[i].getJSONArray(TAG_NEWLIST);
     }
于 2012-11-12T04:33:20.237 回答