Mapping JSONPath
関連ドキュメント
- Mapping Functions - 値の変換・生成関数
- HTTP Request Executor - HTTP通信でのマッピング利用
概要
mapping rule の from、関数の動的 args($. で始まる値)、condition の path は、いずれも Jayway JSONPath(json-path 2.9.0)で評価される。評価は JsonPathWrapper に集約されている。
このページは、設定で使える JSONPath の表現力——特にフィルタ述語 [?(...)] のクロス要素比較——と、エラーにならず静かに空になる罠パターンをまとめる。ここに記載の挙動はすべて JsonPathWrapperTest(idp-server-platform)の回帰テストでピン留めされており、ライブラリのバージョンア ップで挙動が変わればテストが落ちる。
基本パターン
| パターン | 例 | 結果 |
|---|---|---|
| ネストアクセス | $.request_body.email | スカラー値 |
| オブジェクトまるごと | $.request_body | オブジェクト |
| 配列インデックス | $.execution_http_requests[0].response_body.id | 要素の値 |
| ハイフン入りキー | $.password-authentication.success_count | ドット記法のまま参照可 |
| ワイルドカード射影 | $.list[*].properties.holder_name | 全要素のフィールド値リスト |
| フィルタ | $.list[?(@.primary == true)] | 条件一致要素のリスト |
| 複合条件 | $.list[?(@.primary == false && @.type == 'x')] | AND/OR 可 |
| フィルタ後の射影 | $.list[?(@.primary == true)].properties.holder_name | 一致要素のフィールド値リスト |
フィルタの結果は常にリストになる(1件一致でも)。フィルタ後の射影もリストになる点が、後述のクロス要素比較の演算子選択に効いてくる。