我创建了一个方法来解析JSON对象并返回字符串数组。
private String[] getAttributesfromJson(JSONObject attacheddataattributejson) {
String returnjsonArray[] = null;
JSONArray subcatarray = attacheddataattributejson.optJSONArray("subcatAttributes");
if(subcatarray!=null){
for(int i=0;i<subcatarray.length();i++)
{
returnjsonArray[i]=subcatarray.getJSONObject(i).optString("name");
}
}
return returnjsonArray;
}
但是我的eclipse在returnjsonArray[i]上显示了一个警告,这在这个位置只能是空的。但是我也有一个空检查子数组。请帮助。
您将returnjsonArray[]
初始化为null
,并尝试在未初始化的情况下访问它。
Java对null
引用没有魔力;而且,数组在Java中是而不是动态分配的。如果您想这样做,请使用List
(您也应该初始化),并返回此列表的.toArray()
。
见这一行
String returnjsonArray[] = null;
你忘记初始化了
如果你以前没有把篮子装满,你就不会从篮子里得到任何东西。
可以使用下面的代码。
private String[] getAttributesfromJson(JSONObject attacheddataattributejson) throws JSONException {
List<String> returnjsonArray = new ArrayList<String>();
JSONArray subcatarray = attacheddataattributejson.optJSONArray("subcatAttributes");
if (subcatarray != null) {
for (int i = 0; i < subcatarray.length(); i++) {
returnjsonArray.add(subcatarray.getJSONObject(i).optString("name"));
}
}
return (String[]) returnjsonArray.toArray();
}