Java中的空指针访问消息

时间:2013-06-06 12:42:55

标签: java json java-ee nullpointerexception

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

3 个答案:

答案 0 :(得分:1)

您将returnjsonArray[]初始化为null并尝试访问它而不必初始化它。

Java对null引用没有任何魔力;更重要的是,数组在Java中动态分配。如果您需要,请使用List(您也应该初始化),并返回此列表的.toArray()

答案 1 :(得分:1)

见这一行

String returnjsonArray[] = null;

你忘了初始化它。

如果你之前没有填充,你就不会从篮子里得到任何东西。

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