2017-01-26 8 views
2

を取得するためにjsonpathを使用して、どのように私は子ノード値値に基づいて、私は子ノードを識別するために、この表現を使うノードJSONPathを使用して、親ノード

{ 
 
    "store": { 
 
    "book": [ 
 
     { 
 
     "id":"1", 
 
     "author": "Nigel Rees", 
 
     "title": "Sayings of the Century", 
 
     "price": 8.95 
 
     }, 
 
     { 
 
     "id":"2", 
 
     "author": "Evelyn Waugh", 
 
     "title": "Sword of Honour", 
 
     "price": 12.99 
 
     } 
 
    ] 
 
    } 
 
}

から親ノード名を取得することができます、私は親ノード

$.[?(@.id =="1")] 
+0

可能な複製:http://stackoverflow.com/questions/28234347/how-to-find-parentnode-from-childnode-in-a-json-structure-using-jsonpath-or-an-a – CodeLikeBeaker

+0

可能な重複[jsonPathまたは代替を使用してJSON構造内のchildNodeからparentNodeを見つける方法?](https://stackoverflow.com/questions/28234347/how-to-find-parentnode-from-childnode-in-a-json- structure-using-jsonpath-or-an-a) –

+0

あなたは 'book'を見つけた' store'を返そうとしていますか?あるいは、 'id'を持っている' book'を返そうとしていますか? –

答えて

-2

この

を試してみてください見つけるために、この子ノードを使用したいです
$..[?(@.id =="1")] 

開始点にダブルドット(..)を使用します。

+0

'..'はdeepscan演算子です。ノードの深さを検索して一致する式を見つけるだけで、見つかったオブジェクトの親を返しません。 –

0

Gatling(Scala)とJayWay(Java)の両方でJSON Pathの実装を指定していない場合、ネストされたフィルタを使用して親、祖父母などを返すときに子でフィルタリングできます。このJSONで

{ 
    "a": { 
    "b": { 
     "c": { 
      "d": { 
       "e": "foo" 
      } 
     }, 
     "something": "bar" 
    } 
    } 
} 

そして、このパス:

$.a.b[?(@.c[?(@.d[?(@.e == "foo")])])].something 

戻り値:私は式を使用してbを取得することができる午前

[ "bar" ] 

ここではサンプルですフィルタとしてノードを下げる。

他の実装では、これらの式に誤りがあります。

関連する問題