DevToolPal
日本語

JSONPath テスター

JSON に JSONPath クエリを実行し、一致したすべての値とパスを表示します。フィルター式と関数に対応(RFC 9535)。

ローカルで処理、アップロードなし

オプション

表示

JSON

0 文字 · 0 B

一致結果

0 文字 · 0 B

機能

JSONPath は JSON 用のクエリ言語で、XML における XPath のようなものです。$.store.book[*].title のような式でドキュメントの中をたどり、必要な値を選び出します。このツールは、貼り付けた JSON に JSONPath 式を実行し、一致したものをすべて JSON 配列として表示します。一致した値、その正規化パス(例:$['store']['book'][0]['title'])、またはその両方を選べます。

2024 年に公開された IETF 標準 RFC 9535 に準拠しているため、JavaScript、Java、Python、Go などの最新ライブラリと同じ結果になります。コードに書く前にクエリを試したいとき、フィルターが何も返さない原因を調べたいとき、大きな API レスポンスからいくつかの項目を取り出したいときに便利です。

使い方

  1. JSON 欄に JSON を貼り付けるか、.json ファイルをアップロードするか、サンプル を押して定番の書店ドキュメントを読み込みます。
  2. JSONPath 式 にクエリを入力します。入力に合わせて結果が更新されます。
  3. 表示 で、値・パス・パスと値のどれを表示するか選びます。
  4. 結果をコピーまたはダウンロードします。式に構文エラーがあると、解析に失敗した文字の位置が表示されます。

構文早見表

式意味
$ドキュメントのルート
.name または ['name']オブジェクトのメンバー
[0]、[-1]配列の要素(負の数は末尾から数える)
[1:3]、[::2]スライス:開始、終了(含まない)、ステップ
*すべてのメンバーまたは要素
..name任意の深さにある name
[?@.price < 10]フィルターが真になる子要素。@ は現在の要素

フィルターでは &&、||、! で条件を組み合わせたり、$ でドキュメントの別の部分と比較したり、関数を呼び出したりできます:length(@.tags) > 2、count(@.items[*]) == 0、文字列全体が正規表現に一致するかを調べる match(@.code, '[A-Z]{3}')、文字列のどこかに一致すればよい search(@.title, 'Ring')。

例

サンプルの書店データで、次のクエリは価格が 10 未満の本のタイトルを選びます:

$.store.book[?@.price < 10].title

結果:

["Sayings of the Century", "Moby Dick"]

$..book[?@.isbn].author にすると ISBN を持つ本の著者が、$..price にすると自転車を含む店内のすべての価格が得られます。

よくある質問

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

RFC 9535 の標準構文に対応しています。ドット記法とブラケット記法のメンバー名、ワイルドカード、配列インデックス(負のインデックスを含む)、スライス、.. による子孫検索、比較演算子と && || ! を使うフィルター、そして length()・count()・match()・search()・value() 関数です。括弧は単なるグループ化なので、旧来の ?(@.price < 10) という書き方も使えます。

› クエリの結果が空の配列になるのはなぜですか?

空の配列は、式は正しいものの一致するノードがなかったことを意味します。メンバー名(大文字と小文字を区別)や、値が配列かオブジェクトかを確認してください。$..* のような広いクエリで「表示」を「パス」にすると、ドキュメントの中身を確認できます。

› [(@.length-1)] のようなスクリプト式は使えますか?

使えません。スクリプト式は任意のコードを実行するもので、標準にも含まれていません。代わりに負のインデックスを使ってください。[-1] が最後の要素、[-2:] が最後の 2 つです。

› JSON はサーバーに送信されますか?

いいえ。式の解析と評価はページ自身のコードがブラウザー内で行い、何もアップロードされません。