2017-06-20 8 views
1

このJSONモデルのNレベルを反復することができるかどうかは誰にも分かりますか?私はJAVAでこれをやっていて、私はGsonライブラリにアクセスできます。私が何をしたいかNレベルのJSONObjectをどのように反復処理するのですか?

{ 
    "description": "Name of the level", 
    "value": "Name of the value", 
    "cat": { 
     "description":"Name of the level", 
     "value": "Name of the value", 
     "cat": { 
      "description":"Name of the level", 
      "value": "Name of the value", 
      "cat": {     
       "description":"Name of the level", 
       "value": "Name of the value", 
       "cat" : { 
        "description":"Name of the level", 
        "value": "Name of the value", 
        "cat": null 
        } 
       }   
      } 
     } 
    } 

がありますどのように多くのレベルを知らなくても、このJSONを通過し、各レベルの「説明」と「値」を取得することができることです。第1貫通だけ繰り返し処理を、

Map<String, Object> map = gson.fromJson(jsonGeneric, new TypeToken<Map<String, Object>>() {}.getType()); 
map.forEach((x, y) -> System.out.println("key : " + x + " , value : " + y)); 

しかしこと:他の回があるかもしれませんが、私はJAVAで、このアプローチを試してみた限り多くの

10としていくつかのケースでは、唯一、2つのレベルがあるかもしれませんレベルを繰り返すためにコードを適合させる方法や、別の解決策を思いつく方法を理解することはできません。

+4

それは確かに、何を試したことがありますか?もしそうなら、あなたのコードを追加することができます – nafas

+1

どのようにネスティングがどれだけ深いかを知らずに、地図の地図の地図上で反復しますか?これに対する答えは、jsonオブジェクトでどのように行うのかと似ています。 – Thomas

+1

あなたがしなければならないことは、あなたのオブジェクトがcat変数を持っている間にループするだけです。次に、object = object.catを設定します。 (< - Not code) –

答えて

1

あなたのコメントのためにCarl Shilesのおかげで、正しい軌道に乗りました。だから私が探していたことをする最後のコードは、次のとおりです:

JsonParser jsonParser = new JsonParser(); 
    JsonElement jo = jsonParser.parse(jsonGeneric); 
    while (!jo.isJsonNull()) { 
     System.out.println(jo.getAsJsonObject().get("description").getAsString()); 
     System.out.println(jo.getAsJsonObject().get("value").getAsString()); 
     jo = jo.getAsJsonObject().get("cat"); 
    } 
関連する問題