JSONPathテスター

ブラウザでJSONPathクエリを実行します。文書の整形は JSONフォーマッター

問い合わせできるもの

JSONPathはJSON文書から値を取り出します。このページは実用的なサブセットを実行し、一致をすべてJSONで返します。先に文書を整えるにはJSONフォーマッターを使います。

使い方

  1. 上の欄にJSONを貼り付け、JSONPathにパスを入れます。パスの初期値は$です。
  2. 変換がクエリを実行します。パスの横の行に、一致した件数が出ます。
  3. 例を表示は{"store":{"book":[{"author":"Nigel","price":8},{"author":"Evelyn","price":12}],"bicycle":{"price":19}}}とパス$.store.book[*].authorを読み込みます。結果はNigelとEvelynのJSON配列で、件数は2です。
  4. チップは、欄が空なら同じ文書を入れます。$.store.book[?(@.price<10)].authorはNigelを返します。$..priceは8、12、19を返します。
  5. すべてクリアは文書を空にし、パスを$に戻し、件数を消します。結果をコピーは一致したJSONをコピーします。

このページが受け付けるパス

$はルートです。.keyと['key']はプロパティを読みます。[n]は1つの添字を読み、負の添字は末尾から数えます。[*]はすべての要素またはプロパティを読みます。[start:end:step]は配列を切り出し、endは含みません。[0,2]はその添字を選びます。..keyは入れ子のオブジェクトをすべて歩き、そのキーを集めます。

フィルタの形は[?(@.price<10)]または[?(@.author=='Nigel')]です。比較は==、!=、<、>、<=、>=です。テキストは完全一致です。大小の比較は数値に使います。フィルタは配列に対して動きます。未知のパス、または解析できないJSONはエラーです。一致0件は空の配列として有効です。

使う場面

  • 並びの各オブジェクトから、1つのフィールドを取り出す。
  • 価格がある数より小さい行だけ残す。
  • 別のオブジェクトに入った価格も含め、すべての価格を探す。

質問

著者が1人なのに結果が配列なのはなぜですか?

どのクエリも一致の一覧を返すので、1件でも要素が1つの配列です。

スクリプト式は動きますか?

フィルタは@とそのフィールドに対する比較1つです。それ以外のスクリプト構文はエラーで止まります。