Pluck​ 関数を使用したキー-値ペアの抽出

キー-値ペアを操作する DataWeave 関数 (​『entriesOf』​、​『keysOf』​、​『valuesOf』​ など) に加えて、​『pluck』​ を使用することもできます。以下の Mule アプリケーションの例では、DataWeave ​pluck​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。その際、変数名をキー、その値を対応する値として使用します。

Mule アプリケーションは次のコンポーネントで構成されます。

  • フローをトリガーする Scheduler コンポーネント

  • JSON ペイロードを設定する Set Payload コンポーネント

  • pluck​ 関数でキー-値ペアを抽出して配列に配置することで、Set Payload コンポーネントから読み取ったコンテンツを変換する Transform Message コンポーネント

  • 配列を反復処理する For Each スコープコンポーネント

  • 変数名をキー、変数値を値として JSON 配列に設定する Set Variable コンポーネント

  • 反復ごとに変数結果を出力する Logger コンポーネント

Studio キャンバスでの Mule アプリケーションフローの例

アプリケーション XML ファイル (読みやすいように再書式設定):

Transform Message では次の DataWeave スクリプトを設定します。

%dw 2.0
output application/json
---
payload pluck (value,key)  -> {
  Test: {
    Key: key,
    Value: value
  }
}
dataweave

Mule アプリケーションが次の JSON ペイロードを使用して実行される場合:

{
  "firstName": "jason", "job": "engineer", "dept":"support"
}
json

DataWeave の変換結果は次のようになります。

[
  {
    "Test": {
      "Key": "firstName",
      "Value": "jason"
    }
  },
  {
    "Test": {
      "Key": "job",
      "Value": "engineer"
    }
  },
  {
    "Test": {
      "Key": "dept",
      "Value": "support"
    }
  }
]
json

For Each スコープコンポーネントは変換された値を反復処理し、アプリケーションは変数結果の値を (読みやすいように再書式設定して) ログに記録します。