JSONPathクエリ抽出
JSONデータに対してJSONPath式を実行し、一致した値とそのパスをリアルタイムで表示するツールです。フィルター式(?())やワイルドカード、再帰検索(..)に対応し、APIレスポンスから必要なデータを取り出す式の作成・確認に使えます。すべてブラウザ内で処理されます。
使い方
- 「JSON」にデータを入力または貼り付けるか、ファイルを読み込みます。「サンプルを入力」で動作を試すこともできます。
- 「JSONPath」に式を入力します(例: $.store.book[*].author)。よく使う式の例はボタンから入力できます。
- 入力と同時に「抽出結果」に一致した値が表示されます。「パス」に切り替えると、一致した要素のパスを一覧で確認できます。
- 「クリップボードへコピー」で、抽出した値(JSON配列)またはパスの一覧をコピーできます。
このツールについて
JSONPathは、JSONの中から特定の値を取り出すためのクエリ言語で、XMLにおけるXPathのような役割を持ちます。「$」がルート要素を表し、「.」や「[]」で子要素を、「*」ですべての要素を、「..」で階層を問わない再帰検索を、「[?()]」で条件に一致する要素の絞り込みを指定します。
APIテストツールやKubernetes(kubectl -o jsonpath)、各種ログ基盤など、JSONPathはさまざまな場面で使われています。このツールでは、式を入力するたびに結果が更新されるため、期待どおりの値が取り出せるかを試しながら式を組み立てられます。一致した要素のパスも確認できるので、特定の値がJSONのどこにあるかを調べる用途にも便利です。
クエリの実行にはオープンソースライブラリのjsonpath-plus(MITライセンス)を使用し、フィルター式は任意のJavaScriptを実行できない安全な評価モードで処理しています。入力したJSONがサーバーへ送信されることはありません。
よくある質問
フィルター式ではどのような条件が使えますか?
@ で現在の要素を参照し、比較演算子(== != < <= > >=)や論理演算子(&& ||)を組み合わせられます。例えば「$..book[?(@.price < 10 && @.category == 'fiction')]」のように指定します。
配列の最後の要素を取り出すには?
「$.store.book[-1:]」のようにスライス記法で負のインデックスを指定します。「[0:2]」のように範囲を指定すると先頭から2件を取り出せます。
フィルター式でJavaScriptが実行されることはありませんか?
実行されません。フィルター式は安全な評価モードで処理しており、関数の呼び出しなど任意のコードの実行はできないようになっています。
入力したJSONはサーバーに送信されますか?
送信されません。JSONの解析とクエリの実行はすべてブラウザ内で行われます。