2016-03-23 30 views
0

でJsonNodeを使用していない親を持つJSONの兄弟を検索します。親がいない場合、どのように兄弟に移動しますか?私は次のようにJSONオブジェクトを持っているのjava

Response responseObject = client.getAllObjects(); 
JsonNode responseAsNode = responseObject.readEntity(JsonNode.class); 

私は名前で検索する場合::responseAsNode.findValue("name");が、それは正しく私のすべての名前の要素が含まれているList<JsonNode>を与えるので、私は一致するもののためにそれを検索することができ、私はジャージークライアント応答からJSONを取得しています私の期待は、それだけの"name":"value",のJsonNodesのリストを返します。

for (JsonNode node : responseAsNode.findValues("name")){ 
    if (node.textValue().equals("ftp-" + DEFAULT_ENV.toLowerCase())) { 
     //Now, find my id and do something with it. 

     break; 
    } 
} 

node.getParent()に電話すると、親が存在しないため例外が発生します。開発者に"list":を追加してJsonの前に追加する以外に、どうすればよいですか?

+1

あなたのforループでiを使用して配列内の位置を見つけ出します。あなたはresponseAsNode.get(i).get( "id")でIDを取得することができます –

+0

それはとても簡単です、私はそれを見逃すために気が気になります。 –

答えて

2

JSONツリーをナビゲートし、各要素の一致を試みます。

String toFind = "anotherName"; 

Iterator<JsonNode> iter = responseAsNode.elements(); 

while (iter.hasNext()) 
{ 
    JsonNode node = iter.next(); 

    JsonNode name = node.get("name"); 

    if (toFind.equals(name.asText())) 
    { 
     System.out.println(node.get("id").asLong()); 
    } 

} 

これは2と表示されます。

+0

驚くばかり!これも機能します。男、私は何かを十分に見て、私は鼻を越えて見ることができません。ありがとう、@starf。 –

+0

@RyanCoxあまりにも自分自身では難しくありません、我々はすべてそこにいた。 – starf

関連する問題