← JSON ツールに戻る

JSONPath クエリ

最終更新:2026年10月2日

JSON ドキュメントに対して JSONPath 式を実行し、一致した値とそのパスを表示します。クエリはブラウザ内で実行され、ドキュメントはどこにも送信されません。

ブラウザ内で動作 アップロード不要 結果にパス付き フィルタとスライス オープンソース (MIT)

検索言語にできること

JSONPath は JSON にとって、フォルダーのパスがファイルシステムにとってそうであるようなものです。どの値を欲しいかを簡潔に述べる手段です。$ はドキュメントのルート、.name はプロパティへ進み、[…] は配列の中で選択します。

フィルタは真偽値ではなく存在を判定します

フィルタ内の単独のパスは、そのプロパティがあるかを尋ねます。したがって [?(@.inStock)] は inStock が false の項目にも一致します——プロパティは存在するからです。これが RFC 9535 の解釈です。値で判定したいときは明示してください:[?(@.inStock == true)]。これは JSONPath で最もよくある驚きであり、このツールではなく言語の性質です。

意図的に行わないこと

length()、match()、search() といったフィルタ関数は実装しておらず、正規表現、括弧内のスクリプト式、一部のライブラリが追加する親・兄弟の拡張にも対応していません。これらを使ったクエリは、黙って誤った結果を返すのではなく、メッセージとともに拒否されます——このページは対応範囲を明示しているので、ここでの「一致」はそのままの意味です。

よくある質問

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

ルートの $、.name または ['name'] による子の取得、ワイルドカード .* と [*]、再帰下降 ..name と ..*、負の値も含む配列インデックス、スライス [start:end:step]、[0,1] や ['a','b'] のような和集合、そして [?(@.price < 10)] 形式のフィルタ(演算子は == != < <= > >=、&& と || で組み合わせ可能)です。

対応していないものは?

length()、match()、search() などのフィルタ関数、正規表現、括弧内のスクリプト式、および一部のライブラリが追加する JSONPath 拡張(親・兄弟参照など)には対応していません。これらを使ったクエリは、黙って誤った結果を返すのではなく、拒否されます。

?(@.inStock) が inStock が false の項目にも一致するのはなぜですか?

フィルタ内の単独のパスは真偽値ではなく存在の判定だからです。プロパティがあるかどうかを尋ねており、false に設定されたプロパティも存在します。真偽値で判定したいときは ?(@.inStock == true) と明示してください。これは RFC 9535 のフィルタの解釈です。

一致した値がどこから来たか分かりますか?

はい。各結果は見つかったパスとともに一覧され、クエリを書くときと同じドットと角括弧の記法なので、そのパスをそのままクエリや他の JSON ツールに貼り付けられます。

私のドキュメントはアップロードされますか?

いいえ。ドキュメントはブラウザ内で JSON.parse により解析され、クエリはメモリ上で実行されます。何もアップロードされず、ネットワークを切断しても動作します。

$..price が思ったより多く返るのはなぜですか?

再帰下降はドキュメントのすべての階層を訪れるため、..price はどこにある price プロパティでも見つけます——配列の中、ネストしたオブジェクトの中、無関係な枝の中でも同様です。絞り込むには $.store.book[*].price のようにパスで限定してください。

代わりにスキーマで文書を検査したいですか?JSON Schema が使えます。不具合を見つけましたか?お問い合わせ。