JSONPathとは?基本構文と活用例
JSONPathはJSONデータの特定の値を取り出すためのクエリ言語です。XPathのJSON版として設計されており、ネストが深いJSONからのデータ抽出・APIレスポンスの特定フィールド取得に活用できます。
JSONPathの基本構文
$ はルート要素を指します。$.user.nameは「userオブジェクトのnameフィールド」を表します。$.items[0]は配列の最初の要素、$.items[*]はすべての要素、$.items[0:3]はスライス(0〜2番目)、..nameは再帰下降で全階層のnameを検索します。JSON Path Testerではこれらをリアルタイムでテストして結果を即確認できます。
フィルター式の使い方
$.items[?(@.price > 100)]は「priceが100より大きい要素」を抽出するフィルター式です。@は現在の要素を指します。$.users[?(@.active == true)]でアクティブユーザーだけを取得したり、$.products[?(@.category == "book")]でカテゴリを絞り込んだりできます。
どんな場面で使うか
REST APIのレスポンスから特定のフィールドだけ取り出す、CIパイプラインでJSONファイルの特定値を確認する、AWS CLIの--queryオプション(JMESPath)、Kubernetes YAMLのvalueFrom.fieldRef、jq(JSONプロセッサ)の操作確認などで活用できます。
jqとの違い
jqはJSONを処理するUnixコマンドラインツールでJSONPath以上に強力なフィルタリングと変換ができます。JSONPathはより標準的で多くの言語ライブラリが対応しており(JavaScript・Python・Java)、ブラウザ上でのテストに向いています。JSON Path Testerではインストール不要でブラウザ上でJSONPath式を試せます。