JSONPathワイルドカード演算子(*) — 全要素の選択
JSONPathのワイルドカード * を使って、指定レベルのすべての要素やプロパティを選択する方法を学びます。構文、例、一般的なユースケースを解説します。
Operators
詳細な説明
JSONPathにおけるワイルドカード演算子
アスタリスク * は、現在のレベルにあるオブジェクトのすべてのメンバーまたは配列のすべての要素にマッチするワイルドカードです。JSON構造を探索するための最も強力な演算子の一つです。
構文
$.store.* // storeのすべての直接の子要素
$.store.books[*] // books配列のすべての要素
オブジェクトに対して
$.store.* はプロパティ名に関係なく、すべてのプロパティ値を返します。
配列に対して
$.colors[*] は配列のすべての要素を返します。
ネストされたワイルドカード
ワイルドカードを連鎖させて、複数レベルにまたがるプロパティにアクセスできます:
$.users[*].name // すべてのユーザーの名前
$.data[*].tags[*] // すべてのデータエントリのすべてのタグ
ワイルドカード vs. 再帰的降下
| 演算子 | 記号 | 範囲 |
|---|---|---|
| ワイルドカード | * |
現在のレベルのみ |
| 再帰的降下 | .. |
すべてのレベル(深い探索) |
ワイルドカードは単一の深さレベルで動作するため、$.store.* は store の直接の子要素のみを返し、ネストされた孫要素は返しません。ツリー全体を検索する必要がある場合は、再帰的降下(..)を使用してください。
パフォーマンスに関する注意
大きな配列でのワイルドカードは、エバリュエータが現在のレベルを単純に反復するだけなので効率的です。ただし、ワイルドカードとフィルタを巨大なデータセットで組み合わせると、処理時間が増加する場合があります。
ユースケース
プロパティ名を知らなくてもオブジェクトからすべての値を抽出する場合や、配列のすべての要素を反復処理する場合に使用します。ショッピングカートの全商品一覧や、ページネーションされたAPIレスポンスの全レコード一覧などに活用できます。