2012-11-26 38 views
84

我的問題。很簡單,但沒有人問過,也沒有回答。Android(JSONObject)如何循環訪問平坦的JSON對象以獲取每個鍵和每個值

我有一個平坦的JSON:

{"number1":"value1", "number2":"value2", "number3":"value3" } 

我可以將其設置爲一個JSONObject就好了。但是,我不知道如何遍歷每個項目並獲取其關鍵字符串和值字符串。

任何人都可以提供使用JSONObject的高效代碼嗎?我真正想要的是獲得每個項目的關鍵和價值W/O預先知道的關鍵或價值。

在此先感謝。

+1

http://stackoverflow.com/questions/9151619/java-iterate-over- jsonobject –

回答

253

使用keys()迭代器遍歷所有屬性,併爲每個屬性調用get()

Iterator<String> iter = json.keys(); 
while (iter.hasNext()) { 
    String key = iter.next(); 
    try { 
     Object value = json.get(key); 
    } catch (JSONException e) { 
     // Something went wrong! 
    } 
} 
+5

注意:不能使用(String s:json.keys()){...}的簡寫形式。這真是讓人遺憾,JSONArray和JSONObject都不可迭代。 :-( – tudor

+0

什麼是json在這裏?Json Object,Json Array或者anthing else? –

+1

@PravinsinghWaghela它是一個JSONObject,如問題中指定 –

-1

看一看的JSONObject的參考:

http://www.json.org/javadoc/org/json/JSONObject.html

沒有實際使用的對象,它看起來像使用任何getNames()或鍵()返回一個Iterator是必經之路走。

+1

錯誤的鏈接Android中的'JSONObject'沒有'getNames()' http://developer.android.com/reference/org/json/JSONObject.html – Weetu

59

短版弗郎的回答:

for(Iterator<String> iter = json.keys();iter.hasNext();) { 
    String key = iter.next(); 
    ... 
} 
+1

非常優雅,非常有用! – Cocorico

+0

什麼是json在這裏?Json Object,Json Array或者anthing else? –

+0

json是JsonObject –

相關問題