リスト内のデータをフラット化する関数の定義

DataWeave 2.1 は Mule 4.1 と互換性があります。 Mule 4.1 の標準サポートは 2020 年 11 月 2 日に終了しました。このバージョンの Mule は、拡張サポートが終了する 2022 年 11 月 2 日にその​​すべてのサポートが終了Leaving the Siteします。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

『標準サポートが適用されている最新バージョンの Mule 4 にアップグレード』​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

ネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。この DataWeave の例では、ヘッダーで定義された関数を使用して ​interests​ および ​contenttypes​ 配列のデータをフラット化し、空でない場合にのみ ​contenttypes​ を出力します。

この例では、次の関数を使用します。

  • 入力のセット要素を調べる ​map​。

  • 配列をフラット化する ​reduce​。

  • 項目を条件付きで表示する ​if​。

  • 入力を解析する ​splitBy​。

DataWeave
%dw 2.0
output application/json
fun reduceMapFor(data) = data reduce (($$ splitBy ":")[0] ++ "," ++ ($ splitBy ":")[0])
---
payload.results map() ->
{
  email: $.profile.email,
  name: $.profile.firstName,
  tags: reduceMapFor($.data.interests.tags[0]),
        (contenttypes: reduceMapFor($.data.interests.contenttypes[0])) if(sizeOf($.data.interests.contenttypes[0]) > 0)
}
dataweave
入力 JSON
出力 JSON
[
  {
    "email": "johndoe@demo.com",
    "name": "john",
    "tags": "digital-strategy,innovation"
  },
  {
    "email": "janedoe@demo.com",
    "name": "jane",
    "tags": "tax-reform,retail-health",
    "contenttypes": "News,Analysis,Case studies,Press releases"
  }
]
json