JSONPath

JSON

マッチ

API レスポンスや設定ファイル、巨大な JSON から「ほしい値だけ」を取り出したいときに、JSONPath 式を書いて即座に評価できるツールです。JSON を貼り付け、`$.store.book[*].title` や `$..author`、`$.items[?(@.price < 100)]` のような式を入力すると、マッチした値が `$['store']['book'][0]['title']` のような正規化パスつきで一覧表示されます。対応する構文は、ルート `$`、子要素 `.key` / `['key']`、再帰下降 `..`、ワイルドカード `*` / `[*]`、配列インデックス `[0]`・末尾からの `[-1]`、複数指定 `[0,2]` / `['a','b']`、スライス `[1:3]` / `[::2]`、そしてフィルタ `[?(@.price < 10)]`。フィルタ内では比較(`==` `!=` `<` `<=` `>` `>=`)、論理演算(`&&` `||`)、存在チェック(`@.isbn`)が使えます。式や JSON が不正なときは、どちらが原因かと理由を表示するので、書き方を直しながら試せます。マッチした値は「コピー」で JSON 配列としてまとめて取得できます。JSON は API キーや個人情報、業務データを含むことが多いため、評価はすべてあなたのブラウザの中だけで実行し、サーバーへアップロード・保存・送信は一切行いません。jq やプログラムを書く前の動作確認、ドキュメントに載せる式の検証にどうぞ。

使い方

  1. 下の「JSON」欄に対象の JSON を貼り付けます(「サンプル」で例を試せます)。
  2. 上の「JSONPath」欄に `$.store.book[*].title` のような式を入力します。フィルタ `[?(@.price < 10)]` やワイルドカード `*`、再帰下降 `..` も使えます。
  3. マッチした値がパスつきで一覧表示されます。「コピー」で JSON 配列としてまとめて取得。JSON はどこにも送信されません。

よくある質問

貼り付けた JSON はアップロードされますか?

いいえ。パースと JSONPath の評価はすべてあなたのブラウザ内(JavaScript)で実行され、JSON はサーバーへアップロード・保存・送信されません。API キーや個人情報、業務データを含む JSON も安心して試せます。

どの JSONPath 構文に対応していますか?

ルート `$`、子要素 `.key` と `['key']`、再帰下降 `..`、ワイルドカード `*` / `[*]`、インデックス `[0]` と末尾からの `[-1]`、複数指定 `[0,2]` / `['a','b']`、スライス `[1:3]` / `[::2]`、フィルタ `[?(...)]` に対応します。広く使われる中核機能をカバーしています。

フィルタ([?(...)])はどう書きますか?

現在の要素を `@` で参照し、`$.book[?(@.price < 10)]` のように比較できます。演算子は `==` `!=` `<` `<=` `>` `>=`、論理は `&&` と `||`、`@.isbn` のように書けば「そのキーが存在する要素」を選べます。例: `$.book[?(@.price < 10 && @.author == 'Melville')]`。

「再帰下降(..)」とは何ですか?

`$..author` のように書くと、ネストの深さに関係なく JSON 全体から `author` をすべて集めます。どこにあるか分からないキーをまとめて取り出したいときに便利です。

jq との違いは何ですか?

jq は変換・整形まで含む独自言語ですが、このツールは JSONPath 式での「抽出」に特化しています。プログラムや jq を書く前に式が正しく値を拾えるか確認したり、ドキュメント用の式を検証する用途に向いています。整形は json-format、構造差分は json-diff をご利用ください。

結果が0件になります。なぜですか?

キー名や大文字小文字の違い、配列にインデックスでアクセスしているか、フィルタ条件が厳しすぎないかを確認してください。式自体が不正な場合は「JSONPath が不正です」と理由を表示します。0件は「式は正しいがマッチする値がない」状態です。