2016-11-05 17 views
1

を扱っているかどうかわからないときJsonPathを使用する:次のJSON指定されたオブジェクトまたは配列

{ 
    "store": { 
     "book": [ 
      { 
       "category": "reference", 
       "author": "Nigel Rees", 
       "title": "Sayings of the Century", 
       "price": 8.95 
      }, 
      { 
       "category": "fiction", 
       "author": "Evelyn Waugh", 
       "title": "Sword of Honour", 
       "price": 12.99 
      }, 
      { 
       "category": "fiction", 
       "author": "Herman Melville", 
       "title": "Moby Dick", 
       "isbn": "0-553-21311-3", 
       "price": 8.99 
      }, 
      { 
       "category": "fiction", 
       "author": "J. R. R. Tolkien", 
       "title": "The Lord of the Rings", 
       "isbn": "0-395-19395-8", 
       "price": 22.99 
      } 
     ], 
     "bicycle": { 
      "color": "red", 
      "price": 19.95 
     } 
    }, 
    "expensive": 10 
} 

我々は、すべての著者を取得するために$.store.book[*].authorのようなパス式を使用することができます。しかし、bookが配列かオブジェクトかどうかを事前に知らなければどうでしょうか?

{ 
    "store": { 
     "book": { 
       "category": "reference", 
       "author": "Nigel Rees", 
       "title": "Sayings of the Century", 
       "price": 8.95 
     }, 
     "bicycle": { 
      "color": "red", 
      "price": 19.95 
     } 
    }, 
    "expensive": 10 
} 

いずれの場合も、すべての著者を取得するために使用することができ、「一般的なパス」がある:私たちはこのような上記のJSONだけでなく、何かを持っていることができれば?

答えて

1

はい、あなたが使用できます。

ここ
$.store..author 

テスト容易:

https://jsonpath.curiousconcept.com/

「希望このことができます。

+0

パスに 'book'を含める方法はありますか?本 - >作者と定期刊行物 - >作者があれば、私は両方の作者をその道から戻ってくるだろうか? 'book'作家だけを取り戻したいのですが? – Adam

+0

次に、$ .store.book..authorと書くと、両方のJSONシェイプで動作し、 "book"の子孫が " – YSharp

関連する問題