Flex Gateway新着情報
Governance新着情報
Monitoring API Managerネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。
開始する前に、DataWeave バージョン 2 (%dw 2.0
) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (%dw 1.0
) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
この DataWeave の例では、ヘッダーで定義された関数を使用して interests
および contenttypes
配列のデータをフラット化し、空でない場合にのみ contenttypes
を出力します。
この例では、次の関数を使用します。
入力のセット要素を調べる map
。
配列をフラット化する reduce
。
項目を条件付きで表示する if
。
入力を解析する splitBy
。
%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"
}
]