2015-02-23 51 views
0

JSONObjectobj获取价值是这样的:从JSONArray

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

我已经能够检索datadata2,并且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获得价值吗?

如果我需要提供更多信息,请让我知道。

回答

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

试试这个。这将工作。

+0

非常感谢您的帮助 – user2456977 2015-02-23 17:57:50

1

变化

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

String data3 = cast.getString(i); 
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); 
}