ツール
入力
結果
結果はここに表示されます。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 構文