ツール

JSONPath テスター

JSON に対して JSONPath 式を試し、一致したすべての値を正確なパスと JSON Pointer 付きで確認できます。

ブラウザ内で実行データフォーマット1158
無料

入力

0 B

結果

結果はここに表示されます。

JSONPath は、API テストツール、AWS Step Functions、ログパイプライン、kubectl の -o jsonpath 出力などで JSON から値を取り出すために使われており、式は微妙に間違えやすいものです。ドキュメントを貼り付けて式を入力すれば、何が選択されるかを正確に確認できます。一致したものはすべて正規化されたパスと JSON Pointer 付きで返ってくるので、値が何だったかだけでなく、どの配列のどの要素が一致したのかもわかります。エンジンは JavaScript で最も広く使われている実装 JSONPath-Plus で、元の構文にフィルター、再帰下降、親を指す ^ 演算子を加えています。

動作のしくみ

  • $[?(@.stargazers_count > 100000)] のようなフィルターは JSONPath-Plus の安全な評価器で実行されます。この評価器は式を JavaScript として実行するのではなく、自身で解釈します。
  • 各一致にはブラケット記法のパスと RFC 6901 の JSON Pointer が付き、そのまま JSON Patch の操作に使えます。
  • 結果をフラットな配列で見たいときは値のみ、場所の一覧が欲しいときはパスのみを表示できます。
  • 空の配列はエラーではありません。式は有効で、単に何も選択しなかったという意味です。

データの行き先

どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。

このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。

必要なポイント

このツールは無料です。ログインもポイントも必要ありません。

よくある質問

RFC 9535 の JSONPath と同じですか?
ほぼ同じですが、完全ではありません。RFC 9535 は JSONPath-Plus が書かれてからずっと後の 2024 年に JSONPath を標準化したもので、違いが出るのはフィルター構文です。RFC は独自の関数群とともに $[?@.price < 10] と書き、JSONPath-Plus は元の $[?(@.price < 10)] の形を使います。単純なパス、ワイルドカード、スライス、再帰下降は同じように動きます。
ここで動いた式は kubectl でも動きますか?
単純なものなら動きます。kubectl は独自の JSONPath の方言をテンプレート構文で包んでいます(kubectl get pods -o jsonpath='{.items[*].metadata.name}')。ここでパス部分をテストするには、波かっこを外して先頭に $ を付けてください。フィルターや関数は両者で異なるため、単純な選択を超えるものは kubectl 自体で確認してください。
フィルターがプロパティの読み取りに関するエラーで失敗するのはなぜですか?
安全な評価器が許可するのは、現在のノードに対するプロパティアクセス、比較、論理演算だけで、メソッド呼び出し、コンストラクター、そのほか任意のコードを実行し得るものは拒否します。これは意図的な仕様です。どこかから貼り付けた式が、あなたのブラウザで実行されることがあってはならないからです。
.. と * の違いは何ですか?
* は 1 つのノードの直接の子すべてに一致し、.. はその下のすべての階層をたどります。$..name は任意の深さにある name キーを見つけますが、$[*].name はトップレベルの配列の 1 階層下しか見ません。大きなドキュメントで再帰下降を使うと、予想よりはるかに多くの一致が返ることがあります。

背後にあるオープンソース

このツールは JSONPath-Plus/JSONPath(MIT)の上で動作しています。同じ処理を自分のプログラムに組み込みたい場合は、そのライブラリを使ってください。

JSONPath-Plus/JSONPath

別の呼び方

  • jsonpath テスター
  • jsonpath オンライン
  • jsonpath 評価
  • jsonpath フィルター 式
  • jsonpath テスト
  • jsonpath 構文