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;
}

しかし、私の日食は、これがこの位置でのみnullになることができるという警告をreturnjsonArray [i]に表示しています。しかし、subcatarray の null チェックもあります。助けてください。

4

3 に答える 3

1

この行を参照してください

String returnjsonArray[] = null;

初期化するのを忘れていました。

以前にバスケットを満たしていなかった場合、バスケットからは何も得られません。

于 2013-06-06T12:46:42.527 に答える
1

to を初期化し、初期化せずにアクセスしようとしましたreturnjsonArray[]null

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 に答える