JSONPathフィルタ式 — [?(@.key == value)]
JSONPathフィルタ式を使って条件に基づいて配列要素を選択する方法をマスターします。?() 構文、比較演算子、実践的なフィルタリング例を学びます。
Filters
詳細な説明
JSONPathにおけるフィルタ式
フィルタ式は [?()] 構文を使用して、指定した条件を満たす配列要素やオブジェクトプロパティを選択します。フィルタ内の @ シンボルは、現在評価されている要素を参照します。
構文
$.array[?(@.property == value)]
$.array[?(@.price < 50)]
$.array[?(@.name)]
基本的なフィルタリング
$.books[?(@.category == "programming")]はプログラミングカテゴリの書籍を返します。$.books[?(@.price < 20)]は価格が20未満の書籍を返します。$.books[?(@.price >= 35)].titleは価格が35以上の書籍のタイトルを返します。
@ シンボル
@ シンボルは反復処理における現在の要素を表します。for...of ループのループ変数と同様に考えてください:
// 概念的に同等:
books.filter(item => item.category === "programming")
// JSONPath:
$.books[?(@.category == "programming")]
サポートされる演算子
| 演算子 | 例 | 意味 |
|---|---|---|
== |
@.status == "active" |
等しい |
!= |
@.type != "draft" |
等しくない |
< |
@.age < 18 |
より小さい |
<= |
@.score <= 100 |
以下 |
> |
@.price > 0 |
より大きい |
>= |
@.rating >= 4.5 |
以上 |
フィルタの連鎖
フィルタを適用してから、フィルタされた結果のプロパティにアクセスできます:
$.books[?(@.category == "programming")].title
これはまずbooks配列をフィルタし、次にマッチした各要素から title を抽出します。
ユースケース
フィルタ式を使って、JSONデータをデータベースのようにクエリします。価格範囲内の商品の選択、特定のロールを持つユーザーの検索、重要度レベルによるログエントリのフィルタリング、ビジネスルールにマッチするレコードの抽出などに活用できます。