JSONPathとは?

JSONPathはJSONのクエリ言語で、XMLに対するXPathのような役割を果たします。パス式を使用してJSON構造をナビゲートしてデータを抽出できます。JSONPath式は$で始まり、これはドキュメントのルートを表します。ドット記法(.key)またはブラケット記法(['key'])を使用してオブジェクトをトラバースし、[index]を使用して配列要素にアクセスします。

JSONPathは2007年にStefan Gössnerによって最初に説明され、その後、API、テストフレームワーク、データ処理パイプラインで広く使用される標準となりました。JavaScript、Python、Java、PostgreSQLやMySQLなどのデータベースを含む多くの言語とツールでサポートされています。

ツールの説明

このツールを使用すると、有効なJSONドキュメントを貼り付けて、JSONPath式を記述してクエリを実行できます。結果は入力時にリアルタイムで表示され、すべての一致する値がフォーマットされたJSON配列として表示されます。一致数は別途表示されるため、選択されたノード数をすばやく確認できます。

入力JSON:

{
  "store": {
    "book": [
      { "title": "Moby Dick", "price": 8.99, "category": "fiction" },
      { "title": "War and Peace", "price": 12.5, "category": "fiction" },
      {
        "title": "A Brief History of Time",
        "price": 7.99,
        "category": "science"
      }
    ]
  }
}
結果
$.store.book[*].title すべての書籍のタイトル
$.store.book[0] 最初の書籍オブジェクト
$.store.book[?(@.price < 10)] $10より安い書籍
$.store.book[?(@.category == "fiction")] フィクション書籍のみ
$..price ドキュメント内のすべての価格値

機能

  • リアルタイム評価 — 式を入力するか、JSONを編集すると結果が更新されます
  • 専用フィールドに一致数を表示
  • 式フィールドのコピーボタンで素早く再利用可能
  • クリップボードからJSONまたは式をすばやく挿入するペーストボタン
  • 無効なJSONまたは形式が正しくないパス式のエラー報告

動作方法

JSONPath式はjsonpath-plusライブラリを使用して解析されたJSONに対して評価されます。$シンボルはルート要素を参照します。子ノードは.または[]でアクセスされ、ワイルドカードは*で、再帰的下降は..で、フィルターは[?(...)]でアクセスされます。結果は常に一致する値の配列であり、1つの一致のみが見つかった場合でも配列です。

オプションの説明

構文 意味
$ ルート要素
.keyまたは['key'] 子プロパティ
[*] すべての配列要素
[0] 最初の配列要素(ゼロインデックス)
[-1] 最後の配列要素
[0,2] インデックス0と2の要素
[0:2] インデックス0から1の要素(スライス)
..key 再帰的下降 — 任意の深さでkeyを検索
[?(@.price > 5)] フィルター — priceが5より大きい要素
@ 現在のノード(フィルター式内で使用)

ユースケース

  • API開発 — RESTクライアント、テストスイート、またはデータマッピングツールで使用されるJSONPathセレクターがAPI応答から期待されるフィールドを抽出することを確認します
  • データ変換 — 変換スクリプトを記述する前に、ネストされたJSONペイロードから抽出する値を特定します
  • JSONPathの学習 — パス構文を対話的に試して、..[*][?()]などの演算子が実際のデータでどのように動作するかを理解します

ヒント

  • $..*を使用してドキュメント全体のすべての値を取得します — 未知のJSON構造を探索するのに便利です。
  • フィルター式は比較(==!=<><=>=)をサポートし、ネストされたプロパティを参照できます:[?(@.author.name == "Rees")]
  • 深さに関係なくプロパティを一致させるには、..再帰的下降を使用します:$..titleはドキュメント内のすべてのtitleフィールドを検索します。