我有很多从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不能作为数组放?如果是这样的话有什么选择?
答案 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);
}