2012-04-15 13 views
35

大きなラップJsonObjectGsonで繰り返したいと思います。私の最終的な目的は、ArrayListの既存のすべての3桁codeの整数を内部の"unterfeld"オブジェクトに取得することですが、外部オブジェクトのプロパティを反復処理できれば問題ありません。JsonObjectプロパティを繰り返し処理する

{ 
    "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 
    } 
} 

これを行うためのすてきな方法はありますか?

+0

よく質問されました、ありがとうございます。 –

答えて

66

entrySetを使用して、最も外側のメンバーである「JsonObject」を反復処理することができます。

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

まずは、ありがとうございます。 スレッド "main"の例外java.lang.Error:未解決のコンパイルの問題: getAsJsonArray(String)メソッドはMap.Entry型では定義されていません。これはMapオブジェクトの理解が不足している可能性があります。 dotwin

+0

'Map.Entry'から' JsonElement'を取得するために 'getValue'への呼び出しが欠落しました。 –

+1

素晴らしいです、それは今働きます。ありがとう。 。 – dotwin

関連する問題