从JSONArray获取价值

时间:2015-02-23 17:34:28

标签: android json parsing jsonobject

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获取价值吗?

如果我需要提供更多信息,请与我们联系。

3 个答案:

答案 0 :(得分:1)

更改

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

String data3 = cast.getString(i);

答案 1 :(得分:1)

这样做的方法是:

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

试试这个。这将有效。

答案 2 :(得分:1)

数组包含字符串,因此您应该调用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);
}