从 JSONArray 获取值

Get value from JSONArray

JSONObject obj 看起来像这样:

{"data":"Text 1","data2":"Text 2","turnCounter":0,"data3":["0","1","2"]}

我已经能够检索到 datadata2turnCounter,但我不知道如何获取 data3:

这是我的尝试

JSONObject obj = new JSONObject(st);

if (obj.has("data")) {
    retVal.data = obj.getString("data"); //returns Text 1
}
if (obj.has("data2")) {
    retVal.data2 = obj.getString("data2"); //returns Text 2
}
if (obj.has("turnCounter")) {
    retVal.turnCounter = obj.getInt("turnCounter"); // returns 0
}

List<String> allNames = new ArrayList<String>();
JSONArray cast = obj.getJSONArray("data3");
for (int i=0; i<cast.length(); i++) { //does not return 0, 1, or 2
    JSONObject data3 = cast.getJSONObject(i); //"" "" ""
    retVal.data3.set(i, data3.toString()); //"" "" ""
}

谁能告诉我如何从 JsonArray data3 中获取值?

如果我需要提供更多信息,请告诉我。

改变

JSONObject data3 = cast.getJSONObject(i); // 

String data3 = cast.getString(i);

方法是:

JSONArray cast = obj.getJSONArray("data3");
String[] string_array = new String[]();
for (int i=0; i<cast.length(); i++) {
    string_array[i] = cast.getString(i);
    retVal.data3.set(i, string_array[i]);
}

试试这个。这会起作用。

该数组包含字符串,因此您应该调用 getString(i) 而不是 getObject(i):

JSONArray cast = obj.getJSONArray("data3");
for (int i=0; i<cast.length(); i++) {
    String data3 = cast.getString(i);
    Log.e("TAG", data3);
}