JSONPath テスター

貼り付けた JSON をセレクタと簡単な比較フィルタで検索し、一致した値とパスを確認します。未対応の構文は拒否され、JavaScript 式は実行しません。

ブラウザ内でローカルに実行
JSON 文書
クエリ式

名前、ブラケット記法、添字、ワイルドカード、和集合、スライス、子孫セレクタ、簡単な比較フィルタに対応しています。

コアのクエリ解析はローカルで実行されます。未対応の式は eval() にフォールバックせず、明確なエラーを返します。 eval().

一致件数
JSONPath 式を実行して一致した値を確認します。

JSONPath クエリの実行手順

JSON 文書を貼り付け、JSONPath 式を入力すると、一致したノードごとに正規化されたパスと値が表示されます。クエリはこのタブ内のテキストに対して実行され、どこにも送信されません。

パーサーはこのツール専用で、eval() には決してフォールバックしません。実装していない構文は具体的なエラーで止まります。&&、||、! を使った複合フィルターや、フィルター内でルート文書と比較する式は拒否されます。

  1. JSON 文書に文書を貼り付けるか、サンプルを読み込むを押して書店のサンプルから始めます。
  2. クエリ式に式を入力します。ボタンの上にある 4 つの例($.store.book[*].author、$..price、$.store.book[?(@.price < 10)]、$.store.book[0:2])はフィールドに入力し、文書がすでにあればそのまま実行します。
  3. クエリを実行を押します。一致件数のカードにノードごとの行が並び、左が正規化されたパス、右が JSON 値です。
  4. 結果の JSON をコピーで一致した値を 1 つの JSON 配列として取り出し、クリアで文書を空にしてカードを初期状態に戻します。

この JSONPath テスターが対応する範囲

使えるセレクタ

名前、引用符付きの名前、添字に対応します: $.store.book、$["store"]["book"]、$['store']['bicycle']、[0]、最後の要素を指す [-1]、[0,1] や ['a','b'] のような和集合。ドット記法の名前は英字・アンダースコア・$ で始まり、英数字・アンダースコア・$・ハイフンを続けられます。ドットや空白を含むキーはブラケット記法を使います。

ワイルドカード、スライス、子孫: $.store.*、$..price、[0:2]、[::2]、[::-1]。スライスは Python と同じ境界規則で、負の境界は末尾から数え、負のステップは逆方向に進みます。

フィルターは 1 ブラケットに 1 比較

フィルターが評価する比較は 1 つだけです。数値、引用符付き文字列、true、false、null に対して ==、!=、<、<=、>、>= を使えます: [?(@.price < 10)] や [?(@.title == "Moby Dick")]。演算子を書かないフィルターは、そのプロパティが存在して真であるノードを残します: [?(@.isbn)]。

評価できない式は推測せずに拒否します。[?(@.price > 1 && @.price < 10)] は複合フィルターが未対応であること、[?(@.price > $.expensive)] はフィルター内でルートと比較できないこと、=~ /a/ のような正規表現はフィルター式が未対応であることを返します。

パス・コピー・大きな入力

一致したノードは、クエリの書き方にかかわらず $["store"]["book"][0]["author"] という 1 つの正規化形式でパスを報告し、同じノードが二重に並ぶことはありません。結果の JSON をコピーは一致した値を 1 つの JSON 配列として返し、フィクスチャや差分にそのまま使えます。

一致件数のカードは先頭 200 件を表示し、残りの件数を示します。コピーは常に全件の配列を返します。5 万ノードの文書でもワイルドカードのクエリは 1 秒未満で返り、深くネストした文書もスタックオーバーフローなしで走査します。

最近使ったツール: