JSONPathユニオン演算子 — 複数のキーやインデックスを選択
JSONPathのユニオン演算子を使って、1つの式で複数のプロパティや配列インデックスを選択する方法を学びます。構文、例、ベストプラクティスを解説します。
Operators
詳細な説明
JSONPathにおけるユニオン演算子
ユニオン演算子を使うと、角括弧内にカンマ区切りでリストすることで、1つの式で複数のプロパティや配列インデックスを選択できます。
構文
$["key1", "key2", "key3"] // 複数のプロパティ
$.array[0, 2, 4] // 複数の配列インデックス
複数プロパティの選択
$["name", "email", "phone"] は指定された3つのフィールドのみを返し、残りは無視します。
複数配列インデックスの選択
$.logs[0, 3, 4] は位置を指定して特定のエントリを選択します。
ネストされたパスとの組み合わせ
ユニオン演算子はパスの任意のレベルで使用できます:
$.users[0, 1].name // 最初の2人のユーザーの名前
$.config["db", "cache"].host // dbとcacheセクションのhost値
ユニオン vs. ワイルドカード vs. スライス
| 演算子 | 構文 | 選択内容 |
|---|---|---|
| ユニオン | [0, 2] または ["a", "b"] |
特定の項目 |
| ワイルドカード | [*] |
すべての項目 |
| スライス | [0:3] |
範囲の項目 |
ユニオン演算子は、どの要素を含めるかを正確に制御できるため、必要なフィールドや位置が正確にわかっている場合に最適です。
実装に関する注意
- 結果の順序はすべての実装でドキュメント順序ではなく、ユニオンで指定した順序に従います。
- 一部の実装ではプロパティ名に引用符が必要です。
ユースケース
APIレスポンスから特定のフィールドのサブセットを抽出する場合に使用します。例えば、ユーザーオブジェクトからname、email、idのみを選択したり、デバッグのために特定のログエントリをインデックスで選択したりする場合に活用できます。