Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこの DataWeave の例では、入力をフラット化してシンプルにします。入力の各要素で、値がある場合にのみ contentTypes
項目を含めます。次に、このコンテンツをよりわかりやすい形式に再編成します。
開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、DataWeave バージョン 1.2 の例を参照してください。
他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
この例では、次の関数を使用します。
入力配列の各要素を調べる 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"
}
]