2015-02-23 62 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); 
}