2012-12-09 78 views
0

我在下面的格式。在接收JSON字符串:如何在不知道密鑰/名稱字符串的情況下解碼json?

{"27":{"id":"27","uid":"4","title":"teamer.zapto.org","url":"www.google.jo","ip":"74.125.234.63","enabled":"1","services":{"Http 1":{"status":"1","ts":"1355058071"}},"fetch_interval":"60","ping_shift":"0"}, 

"30":{"id":"30","uid":"4","title":"google","url":"www.google.com","ip":"74.125.234.114","enabled":"1","services":{"Http 1":{"status":"1","ts":"1355058079"}},"fetch_interval":"60","ping_shift":"0"}, 

"31":{"id":"31","uid":"4","title":"facebook.com","url":"facebook.com","ip":"69.171.247.21","enabled":"1","services":{"Http 1":{"status":"1","ts":"1355058095"}},"fetch_interval":"60","ping_shift":"0"}, 

"32":{"id":"32","uid":"4","title":"ebir","url":"www.ebir.com","ip":"74.52.50.226","enabled":"1","services":{"Ftp":{"status":"1","ts":"1355058073"},"Http 1":{"status":"1","ts":"1355058073"}},"fetch_interval":"60","ping_shift":"0"}, 

"33":{"id":"33","uid":"4","title":"zapto","url":"teamer.zapto.org","ip":"200.35.150.6","enabled":"1","services":{"Http 1":{"status":"0","ts":"1355056146"}},"fetch_interval":"3600","ping_shift":"2"}, 

"35":{"id":"35","uid":"4","title":"vogella.com","url":"vogella.com","ip":"46.163.79.226","enabled":"1","services":{"Ftp":{"status":"1","ts":"1355058098"},"Http 1":{"status":"1","ts":"1355058098"}},"fetch_interval":"60","ping_shift":"0"}, 

"36":{"id":"36","uid":"4","title":"msn","url":"www.msn.com","ip":"131.253.13.140","enabled":"1","services":{"Http 1":{"status":"1","ts":"1355058103"}},"fetch_interval":"60","ping_shift":"0"}, 

"37":{"id":"37","uid":"4","title":"dubizzle.com","url":"www.dubizzle.com","ip":"94.236.93.152","enabled":"1","services":{"Http 1":{"status":"1","ts":"1355058068"}},"fetch_interval":"60","ping_shift":"0"}, 

"38":{"id":"38","uid":"4","title":"olx.jo","url":"olx.jo","ip":"204.74.99.100","enabled":"1","services":{"Http 1":{"status":"1","ts":"1355058108"}},"fetch_interval":"60","ping_shift":"0"}, 

"40":{"id":"40","uid":"4","title":"www.sukar.com","url":"www.sukar.com","ip":"72.52.8.195","enabled":"1","services":{"Ftp":{"status":"0","ts":"1355058092"},"Http 1":{"status":"1","ts":"1355058092"}},"fetch_interval":"60","ping_shift":"0"}} 

,你可以看到按鍵是數字(27,30,31,......),並是不連續的。我怎樣才能從這樣的json獲取數據?我知道它的長度取決於長度,但我不知道如何去做。通常我會用jObject.getString("id"),但是因爲我不知道字符串是什麼我能做什麼?

+2

您嘗試過什麼嗎? –

+0

'(var key in json){ // ... }'不起作用? – gkris

+0

@ gkris這不是java語法,是嗎? – Waqleh

回答

4
JSONObject questionMark = new JSONObject(jsonString); 
    Iterator keys = questionMark.keys(); 
while(keys.hasNext()) { 
    // loop to get the dynamic key 
    String currentDynamicKey = (String)keys.next(); 

    // get the value of the dynamic key 
    JSONObject currentDynamicValue = questionMark.getJSONObject(currentDynamicKey); 
+0

用迭代器更好。 –

+0

生病也試試這個,但是什麼是某種類的迭代器? – Waqleh

+1

迭代器代替枚舉 – user903772

5

如果你有一個JSONObject爲根,你應該能夠做到以下幾點:

JSONObject root = new JSONObject(jsonString); 
JSONArray names = root.names(); 
for(int i = 0; i < names.length(); i++) { 
    String tag = names.getString(i); 
    ... 
} 

tag將是你指的是數字標籤。

+0

什麼是root.name()以及如何定義它 – Waqleh

+0

正如我所說的,root是一個'JSONObject'。 'root.names()'是'JSONObject'的一個方法。 –

+0

奇怪的是,它是按照以下順序(30,32,40,31,35,36,33,27,37,38),當我做Log.v(「tag:」,tag.trim() .toString()+「」);但只要我有他們都沒問題。 – Waqleh

相關問題