2012-04-15 21 views
35

Gson ile büyük sarıcı JsonObject boyunca yinelemek istiyorum. Son hedefim, "unterfeld" içlerindeki mevcut üç haneli code tam sayıların ArrayList nesnesini elde etmektir, ancak dış nesnenin özellikleri boyunca yineleyebildiğimde sorun olmaz.JsonObject özellikleri üzerinde yineleme

{ 
    "something1": { 
    "bezeichnung": "something1", 
    "unterfeld": [ 
     { 
     "bezeichnung": "bla1", 
     "unterregionen": [ 
     ], 
     "code": 111 
     }, 
     { 
     "bezeichnung": "bla2", 
     "unterregionen": [ 
     ], 
     "code": 222 
     } 
    ], 
    "code": 3 
    }, 
    "something2": { 
    "bezeichnung": "something2", 
    "unterfeld": [ 
     { 
     "bezeichnung": "bla3", 
     "unterregionen": [ 
     ], 
     "code": 333 
     } 
    ], 
    "code": 6 
    }, 
    "something3": { 
    "bezeichnung": "something3", 
    "unterfeld": [ 
     { 
     "bezeichnung": "bla4", 
     "unterregionen": [ 
     ], 
     "code": 444 
     }, 
     { 
     "bezeichnung": "bla5", 
     "unterregionen": [ 
     ], 
     "code": 555 
     }, 
     { 
     "bezeichnung": "bla6", 
     "unterregionen": [ 
     ], 
     "code": 666 
     } 
    ], 
    "code": 9 
    } 
} 

Bunu yapmak için herhangi bir temiz yol var mı?

+0

İyi düşünülmüş soru, teşekkürler –

cevap

66

En dıştaki JsonObject üyeleri üzerinde yinelemek için entrySet'u kullanabilirsiniz.

JsonObject object; 
ArrayList<Integer> codes = new ArrayList<Integer>(); 
for (Map.Entry<String,JsonElement> entry : object.entrySet()) { 
    JsonArray array = entry.getValue().getAsJsonObject().getAsJsonArray("unterfeld"); 
    for (JsonElement codeHolder : array) { 
     codes.add(codeHolder.getAsJsonObject().getAsJsonPrimitive("code").getAsInt()); 
    } 
} 
+1

Her şeyden önce çok teşekkürler. Muhtemelen benim Map nesnesi anlayış eksikliği, ama bir hata alıyorum: "ana" iş parçacığı içinde özel durum java.lang.Error: Çözümlenmemiş derleme sorunu: getAsJsonArray (String) yöntemi, Map.Entry türü için tanımsız dotwin

+0

"MapEntry" öğesinden "JsonElement" öğesini çekmek için getValue öğesinin çağrısını kaçırdım. –

+1

harika, şimdi çalışıyor. Teşekkürler. . – dotwin

İlgili konular