Flex Gateway新着情報
Governance新着情報
Monitoring API Manager
DataWeave 2.1 は Mule 4.1 と互換性があります。 Mule 4.1 の標準サポートは 2020 年 11 月 2 日に終了しました。このバージョンの Mule は、拡張サポートが終了する 2022 年 11 月 2 日にそのすべてのサポートが終了します。 このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。 標準サポートが適用されている最新バージョンの Mule 4 にアップグレードすることをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。 |
この DataWeave の例では、入力をフラット化してシンプルにします。入力の各要素で、値がある場合にのみ「contentTypes」項目を含めます。次に、このコンテンツをよりわかりやすい形式に再編成します。
この例では、次の関数を使用します。
入力配列の各要素を調べる map
。
「tags」配列の複数の要素を 1 つの項目に集約する reduce
。
([0]
で) 各文字列の最初の部分のみを選択して 2 番目の部分を破棄するために「tags」配列の値を解析する splitBy
。
区切り文字としてカンマを使用して、これらの要素を 1 つの文字列に連結する ++
。
「contentTypes」配列が 0 より大きい場合にのみ最後の項目を含める if
。
%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
}
{
"results": [
{
"profile": {
"firstName": "john",
"lastName": "doe",
"email": "johndoe@demo.com"
},
"data": {
"interests": [
{
"language": "English",
"tags": [
"digital-strategy:Digital Strategy",
"innovation:Innovation"
],
"contenttypes": []
}
]
}
},
{
"profile": {
"firstName": "jane",
"lastName": "doe",
"email": "janedoe@demo.com"
},
"data": {
"interests": [
{
"language": "English",
"tags": [
"tax-reform:Tax Reform",
"retail-health:Retail Health"
],
"contenttypes": [
"News",
"Analysis",
"Case studies",
"Press releases"
]
}
]
}
}
],
"objectsCount": 2,
"totalCount": 2,
"statusCode": 200,
"errorCode": 0,
"statusReason": "OK"
}
[
{
"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"
}
]