0

我创建了一个解析 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;
}

但是我的日食在 returnjsonArray[i] 上显示警告,这只能在这个位置为空。但是我也对 subcatarray 进行了空检查。请帮忙。

4

3 回答 3

1

看到这条线

String returnjsonArray[] = null;

你忘了初始化它。

当你以前没有装满篮子时,你不会从篮子里得到任何东西。

于 2013-06-06T12:46:42.527 回答
1

您初始化您的returnjsonArray[]tonull并尝试在没有初始化它的情况下访问它。

Java 没有null引用魔法。更重要的是,数组不是在 Java 中动态分配的。如果需要,请使用 a List(您也应该对其进行初始化),然后返回此列表的.toArray().

于 2013-06-06T12:44:30.887 回答
0

您可以使用以下代码。


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();
}
于 2013-06-06T14:14:40.070 回答