2012-12-09 10 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")을 사용 하겠지만 문자열은 무엇을 해야할지 모르겠다. 루트로 JSONObject이있는 경우

+2

아무 것도 시도해 보지 않으셨습니까? –

+0

'for (json의 var 키) { // ... }'작동하지 않습니까? – gkris

+0

@gkris 이것은 자바 구문이 아닙니다. – 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

Iterator가 Enumeration 대신 사용됩니다. – user903772

5

, 다음을 수행 할 수 있어야한다 :

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

내가 말했던 것처럼, 루트는'JSONObject'이다. 'root.names()'는'JSONObject'의 한 메소드입니다. –

+0

이상한 일은 Log.v ("tag :", tag.trim())를 수행 할 때 다음 순서 (30, 32, 40, 31, 35, 36, 33, 27, 37, 38) .toString() + ""); 그러나 오랫동안 나는 그들에게 전혀 문제가 없다. – Waqleh

관련 문제