$、.、..、*、[]、スライス、フィルタ ?() などのJSONPath構文に対応。 JSONデータと式を入力するだけで、マッチした値とパスをその場で確認できます。
JSONデータ
JSONPath式
クイック挿入
抽出結果
マッチ件数
4
実行時間
<1ms
[ "Nigel Rees", "Evelyn Waugh", "Herman Melville", "J. R. R. Tolkien" ]
ADVICE
「テーブル」表示は、マッチした値がすべて同じ形のオブジェクトの場合に切り替えて確認できます。
構文チートシート
$ルート要素.property直下の子要素..property再帰下降で検索*すべての子要素[n] / [-n]添字(末尾はマイナス)[a,b]複数選択[s:e:step]スライス[?(@.expr)]フィルタ式JSONPathとは?構文とJSONデータからの値の抽出方法
JSONPathは、JSONデータの中から特定の値だけをパス形式の記法で指定して取り出すためのクエリ言語です。XMLにおけるXPathのJSON版として広く使われており、APIレスポンスの検証や、設定ファイル・ログデータから条件に合う項目だけを抜き出す用途などで活用されています。
本ツールは、JSONデータとJSONPath式を入力するだけでマッチした値・マッチしたパス・該当件数・実行時間をその場で確認できるオンラインツールです。$、.(子要素)、..(再帰下降)、*(ワイルドカード)、[](添字・スライス・複数選択)、[?()](フィルタ式)といった主要な構文に対応しています。
「このJSONPath式で本当に意図した値が取れているか確認したい」「バックエンドの実装に組み込む前に手元で式を試したい」という場面で、動作確認用のサンドボックスとしてご利用いただけます。
こんなシーンで便利です
APIレスポンスから必要なフィールドだけを確認したい時に
APIから返ってきたJSONの中から、特定のフィールド(価格・IDなど)だけを取り出す式を組み立てて、実装前に手元で動作確認したい場合に使えます。
大きな設定ファイルやログJSONから条件付きで検索したい時に
階層が深いJSONファイルの中から、特定の条件を満たす要素(例:価格が一定額未満の商品だけ)をフィルタ式で絞り込みたい場合に活用できます。
JSONPathの構文を学習・検証したい時に
., .., *, [], スライス、フィルタ式など、JSONPathの各構文の挙動をサンプルデータとクイック挿入ボタンで実際に試しながら理解したい場合に便利です。
本番コードに組み込む前に式の妥当性を検証したい時に
バックエンドやスクリプトにJSONPath式を組み込む前に、想定通りの件数・値が取得できるかを事前にブラウザ上で検証しておきたい場合に使えます。
使い方は簡単 4ステップ
- 「JSONデータ」欄に対象のJSONを貼り付けるか、サンプルデータを読み込みます。
- 「JSONPath式」欄に抽出したいパス(例:$.store.book[*].author)を入力します。
- クイック挿入のプリセットボタンから、よく使う構文をワンタップで試すこともできます。
- マッチした「値」「パス」「テーブル」の各タブを切り替えて、抽出結果を確認します。
※入力・評価の処理はすべてブラウザ内のJavaScriptで完結し、JSONデータが外部に送信されることはありません。
ご利用時の注意点
- 本ツールは一般的なJSONPath実装($、.、..、*、[]、スライス、和集合、比較・存在フィルタ)に準拠した挙動を採用しています。JSONPathには単一の公式仕様が存在しないため、利用中のライブラリと細部の挙動が異なる場合があります。
- フィルタ式 [?(@.expr)] は、比較演算子(==, !=, <, <=, >, >=)と && / || による複数条件の組み合わせに対応しています。括弧のネストを含む複雑な論理式には対応していません。
- 再帰下降(..)を大きなJSONデータに対して使用すると、全階層を走査するため結果件数が多くなったり、処理に時間がかかったりする場合があります。
- 完全無料・安全:入力したJSONデータやパス式は一切送信されない、通信が発生しないブラウザ完結型を採用しています。
JSONPath主要構文の早見表
本ツールが対応している主なJSONPath構文と、その意味・使用例をまとめました。
| 構文 | 意味 | 例 |
|---|---|---|
| $ | ルート要素(データ全体) | $ |
| .property | 直下の子要素を指定 | $.store |
| ..property | 階層を問わず再帰的に検索 | $..price |
| * | すべての子要素(ワイルドカード) | $.store.* |
| [n] | 配列のn番目の要素(0始まり) | $.store.book[0] |
| [-n] | 配列の末尾からn番目の要素 | $.store.book[-1] |
| [a,b] | 複数の添字・キーをまとめて指定 | $.store.book[0,1] |
| [start:end:step] | 配列のスライス(範囲指定) | $.store.book[1:3] |
| [?(@.expr)] | 条件に合う要素だけを絞り込むフィルタ式 | $.store.book[?(@.price<10)] |
JSONPathの基本構文と、目的に応じた式の組み立て方
JSONPathの主要な構文の考え方と、実務でよく使う組み合わせパターンを解説します。
結論:JSONPathは「階層の指定」と「絞り込み」の組み合わせで組み立てる
JSONPath式は、大きく分けて「どの階層を見るか」(. や .. による子要素・再帰下降の指定)と「どの要素を選ぶか」([] による添字・スライス・フィルタでの絞り込み)の組み合わせで構成されています。
まず対象データの構造を把握し、目的の値がどの階層にあるかを確認したうえで、必要に応じて絞り込み条件を追加していくと、意図通りの式を組み立てやすくなります。
「.」(子要素)と「..」(再帰下降)はいつ使い分けるか
データの階層構造をあらかじめ把握できている場合は、「.」で明示的にパスをたどる方が、意図しない要素まで拾ってしまうリスクが少なく安全です。
一方で、階層が深い・不揃いなデータや、キー名だけがわかっていて正確な位置が不明な場合は、「..」(再帰下降)を使うことで、階層を問わず目的のキーを一括で検索できます。
配列の絞り込み:添字・スライス・フィルタ式の使い分け
特定の位置の要素だけが欲しい場合は添字 [n] やスライス [start:end]を、値そのものの条件で絞り込みたい場合はフィルタ式 [?(@.expr)]を使います。
例えば「価格が10未満の商品だけ」を取り出したい場合はフィルタ式が適しており、「先頭の3件だけ」といった位置ベースの絞り込みにはスライスが適しています。
実装への組み込み前に、まずサンドボックスで式を検証する
JSONPathはライブラリによってフィルタ式や負の添字の対応範囲に差異があるため、本番コードに組み込む前に実際のデータに近いサンプルで式の挙動を検証しておくことをおすすめします。
マッチ件数が想定より多い・少ない場合は、まず「..」と「.」の使い分けを見直すことが解決の近道になることが多くあります。
よくある失敗と対策
式の先頭に $ を付け忘れて、意図しない結果になる
JSONPath式はルート要素を表す $ から始めるのが基本ですが、これを省略してしまい、期待した階層とは異なる位置から検索が始まってしまう失敗です。
💡 対策・解決策を見る▼
配列に対して「.」でアクセスしようとしてしまう
book のような配列に対して $.store.book.author のように「.」で直接プロパティを指定してしまい、配列の要素までたどり着けず結果が0件になる失敗です。
💡 対策・解決策を見る▼
フィルタ式の比較演算子まわりの書き方を誤ってしまう
[?(@.price < 10)] のように演算子の前後にスペースを入れすぎたり、文字列の比較で引用符を付け忘れたりして、フィルタ式が正しく評価されない失敗です。
💡 対策・解決策を見る▼
再帰下降(..)を多用しすぎて、意図しない要素まで拾ってしまう
階層構造がわかっているにもかかわらず「..」を使ってしまい、同じキー名を持つ別階層の要素まで一緒にマッチしてしまう失敗です。
💡 対策・解決策を見る▼
よくある質問(FAQ)
Q.JSONPathとは何ですか、どのような場面で使いますか
A. JSONPathは、XMLに対するXPathのように、JSONデータの中から特定の値を指定して抽出するための記法です。APIレスポンスの中から必要なフィールドだけを取り出す、大きな設定ファイルやログデータから条件に合う要素だけを検索する、といった場面でよく使われます。
Q.「.」と「..」の違いは何ですか
A. 「.」(ドット1つ)は直下の子要素を指定します。例えば $.store.book は store の直下にある book だけを指します。一方「..」(ドット2つ、再帰下降)は階層を問わずデータ全体から該当する要素を探します。例えば $..price は、どの階層にあっても price というキーをすべて見つけ出します。
Q.フィルタ式 [?(@.price<10)] はどのように使いますか
A. 配列の要素のうち、条件に合うものだけを絞り込みたい場合に使います。@ は現在チェックしている要素自身を表し、@.price<10 は「その要素のprice が10未満」という条件になります。本ツールでは ==、!=、<、<=、>、>= の比較に加えて、&& や || で複数条件を組み合わせることにも対応しています。
Q.スライス表記 [1:3] や負の添字 [-1] は使えますか
A. はい、使えます。[1:3] は添字1から2まで(3は含まない)の範囲を、[-1] は配列の末尾(最後の要素)を指します。[start:end:step] のように増分(step)を指定するスライスにも対応しています。
Q.入力したJSONデータが外部のサーバーに送信されることはありませんか
A. ありません。本ツールはJSONの解析からJSONPathの評価まで、すべての処理をブラウザ内のJavaScriptのみで完結させています。入力データが外部に送信されたり保存されたりすることは一切なく、ページを閉じれば内容はすぐに消去されます。
Q.結果が0件になってしまいます、何を確認すればよいですか
A. よくある原因として、(1) 式の先頭に $ を付け忘れている、(2) プロパティ名の大文字・小文字が実際のデータと一致していない、(3) 配列に対して .(ドット)でアクセスしようとしている(配列には [*] や [0] などの添字表記が必要)、(4) フィルタ式の比較演算子の前後にスペースが入りすぎている、などが挙げられます。まずはクイック挿入のサンプル式で正しく抽出できるかをご確認ください。
Q.JSONPathの実装(ライブラリ)によって結果が変わることはありますか
A. はい、あります。JSONPathには公式の単一仕様が存在せず、実装によってフィルタ式の対応範囲や、負の添字・スライスの挙動などに細かな差異があります。本ツールは一般的なJSONPath実装($、.、..、*、[]、スライス、和集合、比較フィルタ)に準拠した挙動を採用していますが、本番環境で使用しているライブラリと結果が異なる場合は、そのライブラリのドキュメントもあわせてご確認ください。
あなたの声で、
このツールをより鋭く。
「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。