JSONObject
obj
如下所示:
{"data":"Text 1","data2":"Text 2","turnCounter":0,"data3":["0","1","2"]}
我已经能够检索data
,data2
和turnCounter
,但我无法弄清楚如何获取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
获取价值吗?
如果我需要提供更多信息,请与我们联系。
答案 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);
}