JSONPath による JSON クエリ

JSONPath で JSON をクエリ:ワイルドカード、再帰降下、スライス、[?(@.price < 10)] のようなフィルター式に対応。入力中に結果が更新されます。jq 構文ではありません。

例:
結果

$ はルート、.name または ['name'] は子要素、[0] は配列要素、[*] は全要素、.. は任意の深さを検索、[?(@.price < 10)] は絞り込み、[-1:] は最後の要素を表します。

すべてブラウザ内で実行されます。データがアップロードされることはありません。

関連ツール

すべて表示

JSON クエリ(JSONPath)とは?

JSON クエリツールは、JSON に対して JSONPath 式を評価し、一致するすべての値を JSON 配列として表示します。ワイルドカード、再帰降下、配列のスライス、フィルター式に対応しています。注意:使うのは JSONPath の構文($.store.book[*].title)で、jq のパイプ構文では ありません。

JSON クエリ(JSONPath)の使い方

  1. JSON 入力 欄に JSON を貼り付けます(または例をクリックすると、サンプルデータも読み込まれます)。
  2. $..price のような JSONPath 式 を入力します。
  3. 一致した値を出力で確認します。ラベルには一致した件数が表示されます。
  4. コピー で結果の配列をコピーします。

例

入力
{"store":{"book":[{"title":"A","price":8},{"title":"B","price":12}]}}
Query: $.store.book[?(@.price < 10)].title
出力
[
  "A"
]

JSON クエリ(JSONPath)を使うべき場面

JSONPath を受け付けるツール(API ゲートウェイ、Kubernetes の kubectl -o jsonpath、テストフレームワーク、監視)で使う前に、JSONPath 式をテストするときに使います。パイプ、map、オブジェクトの構築といった jq の機能が必要な場合は、jq 自体を使ってください。それらは未対応です。1 つの正確なパスなら、JSON パスファインダーのほうが簡単です。

JSON クエリ(JSONPath)の仕組み

クエリは jsonpath-plus ライブラリ(Goessner の JSONPath に拡張を加えたもの)で評価されます。$ はルート、.name や ['name'] はプロパティ、[0] はインデックス、[*] はすべての子、.. はあらゆる深さでの検索、[start:end] は配列のスライス(負のインデックスは末尾から数えます)、[?(…)] は @ を現在の要素としたフィルターです。フィルター式は jsonpath-plus の安全な評価器で実行され、比較演算子と論理演算子には対応しますが、任意の JavaScript は実行しません。結果は常に一致の配列で、スペース 2 つのインデントで出力されます。

一般的な使用例

  • API レスポンスからすべての価格や ID を抽出する
  • API テストや監視ルール用に JSONPath をテストする
  • 条件で配列の要素を絞り込む
  • kubectl の jsonpath 風のクエリを試作する

セキュリティ注意事項

すべてブラウザ内でローカルに処理され、貼り付けたコードがアップロードされることはありません。

よくある質問

これは jq ですか?

いいえ。これは JSONPath という別のクエリ言語を使います。jq のパイプや関数は未対応です。

結果が常に配列なのはなぜですか?

JSONPath 式は任意の数の値に一致しうるため、すべての一致が配列で返されます。

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

いいえ、クエリはブラウザ内で実行されます。

ここで大きな数値の精度は失われますか?

はい、値は JavaScript の数値として評価されるため、2^53 を超える整数はクエリ結果で丸められることがあります。

おすすめの次のステップ

他のカテゴリを見る