nullpointer访问消息

7d7tgy0s  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(374)

我创建了一个方法来解析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]上显示了一个警告,它只能在这个位置为null,但是我也对subcatarray进行了null检查。请帮忙。

disho6za

disho6za1#

您可以使用以下代码。

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();
}
eaf3rand

eaf3rand2#

你初始化你的 returnjsonArray[]null 在没有初始化的情况下尝试访问它。
java没有魔法 null 参考文献;而且,数组在java中不是动态分配的。如果你想那样,就用 List (您也应该初始化),并返回此列表的 .toArray() .

nx7onnlm

nx7onnlm3#

看到这条线了吗

String returnjsonArray[] = null;

你忘了初始化它。
如果你以前不装满篮子,你就什么也得不到。

相关问题