MuleSoft tutorials DataWeave Language Part2 まとめ
勉強メモです。
参考
https://developer.mulesoft.com/tutorials/dataweave/getting-started-with-dataweave-part-2
動的要素
配列から複数の要素を前から順番にじゃなくて、動的に取り出したいときに使う
書き方のサンプル:payload.array[?($."Company" == "MuleSoft")]
? はフィルターを表すセレクタ
$ に続けて条件を書く
. は単一の値を表すセレクタ
つまり Company 要素が MuleSoft となるものを 1つだけ 返す
その他のセレクタのリストは ここ を参照
Map
ペイロードをターゲットのエンドポイントに合わせて変換するときとかに使う
どういうことかっていうと、例えば MySQL から取って来たデータを Salesforce に投入する、ってときに、Map をつかってマッピングしてやる時とかにつかう
実際のところは Insert の一般設定 (General) にあるぐにゃぐにゃしたアイコンをクリックしてドラッグアンドドロップでエレメント結んでやると DataWeave の Map が自動的にできたりするから手打ちで書くのってあんまやらないかも
https://gyazo.com/29d6ef96c764ee06d31536ac5c7d0ea8
書き方のサンプル:
https://gyazo.com/005457cd51d5563880e55b336efb9765
セレクタを使った Map
ペイロードをターゲットのエンドポイントに合わせて変換するときとかに使う
書き方のサンプル:
code: java
payload.accountType.*users map {
accountInfo: $
}
accountType という名前の要素から
users という名前の配下の要素を全部 (* セレクタ) 持ってくる
accountInfo という名前で、リストの中からそれぞれのの要素を持って来て ($ セレクタ) で対応付ける
書き方のサンプルその2:
code: java
payload.accountType.*admins map {
index: $$,
accountInfo: $.Name ++ $.Company,
}
accountType という名前の要素から
admins という名前の配下の要素を全部 (* セレクタ) 持ってくる
$$ でインデックスの番号を持ってくる
mapObject
書き方のサンプル:
https://gyazo.com/8477b7a0faca70d12a7e894bea1d0104
accountType[0] がなんで admins なんだろ?そもそも JSON に順序性ってあるのか。。。?謎。
それ以外はなんとなく理解
Pluck
書き方のサンプル:
Filter
書き方のサンプル:
Filter Object
書き方のサンプル:
Reduce
配列を受け取って、単一の値を返す
返す値が減ってるから Reduce なのかな?
書き方のサンプル: