如何使JSObject成为数组?

时间:2012-11-12 04:24:46

标签: android arrays json nullpointerexception

我有很多从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]获取null错误,尽管日志显示JSONFunction.getnewstype已成功检索数据。 我也担心第二行jsonArrayallnewstype[i]也可能导致同样的错误。

所以JSObject不能作为数组放?如果是这样的话有什么选择?

1 个答案:

答案 0 :(得分: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);
     }