レッスン 9
JSONPath クエリ
パス式でネストしたドキュメントから値を抽出する。
JSON ドキュメントが大きいとき、すべてのレベルを頭の中で辿らずに1 つのフィールドが必要になることが多い。JSONPath は、XML の XPath に似た精神で JSON ツリー内のノードを選択するクエリ言語です。
サンプルドキュメント
{
"store": {
"books": [
{ "title": "JSON 101", "price": 12.5 },
{ "title": "API Design", "price": 28 }
]
}
}
よく使う式
| 式 | 意味 |
|---|---|
$ | ドキュメントのルート |
$.store.books | books 配列 |
$.store.books[0].title | 最初の本のタイトル |
$.store.books[*].price | すべての価格 |
$..price | ルート下のどこかの price |
$ を「ここから」、. を「子プロパティ」、[n] を配列インデックス、[*] を全要素、.. を再帰的降下と読みます。
ユースケース
- ネストした API レスポンスからユーザー ID をテストやスクリプトで取得
- 異種 payload 全体で
level == "error"のログイベントをフィルタ - 統合ガイドで「どこにあるか」を文書化
JSONPath vs 手書きコード
JavaScript なら data.store.books[0].title と書けます。JSONPath が輝くのは:
- API バージョン間で深さが変わる
- 多くのファイルで同じパスを設定からクエリする
- ツールがアドホック調査用のパス入力を提供する
限界
実装によって拡張(フィルタ、スライス)がわずかに異なります。本番パイプラインではライブラリバージョンを固定し、重要なパスにテストを追加してください。JSONPath は構造を読む — 無効な JSON は直しません。先にパースと検証を。