Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこれらの DataWeave の例では、ある項目に基づいてグループ化されている入力を取得し、別の項目に基づいてデータをグループ化する新しい構造に変換します。
開始する前に、DataWeave バージョン 2 (%dw 2.0
) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (%dw 1.0
) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。
両方の例で、次の関数を使用します。
subject
で項目を整理する groupBy
入力の項目を新しい階層にマップする mapObject
および map
。
%dw 2.0
output application/json
---
classrooms: payload..*teacher groupBy $.subject mapObject ((teacherGroup, subject) -> {
class: {
name: subject,
teachers: { (teacherGroup map {
teacher:{
name: $.name,
lastName: $.lastName
}
})
}
}
})
<school>
<teachers>
<teacher>
<name>Mariano</name>
<lastName>De Achaval</lastName>
<subject>DW</subject>
</teacher>
<teacher>
<name>Emiliano</name>
<lastName>Lesende</lastName>
<subject>DW</subject>
</teacher>
<teacher>
<name>Leandro</name>
<lastName>Shokida</lastName>
<subject>Scala</subject>
</teacher>
</teachers>
</school>
{
"classrooms": {
"class": {
"name": "DW",
"teachers": {
"teacher": {
"name": "Mariano",
"lastName": "De Achaval"
},
"teacher": {
"name": "Emiliano",
"lastName": "Lesende"
}
}
},
"class": {
"name": "Scala",
"teachers": {
"teacher": {
"name": "Leandro",
"lastName": "Shokida"
}
}
}
}
}
この DataWeave の例では、JSON オブジェクトの階層を変更します。出力では、language
で項目をグループ化し、各コースの参加者の名前が含まれる新しい要素 attendees
を追加します。
%dw 2.0
output application/json
---
{
"langs" :
payload.langs groupBy $.language
mapObject ((nameGroup, language) -> {
(language): {
"attendees" : nameGroup map {
name: $.name
}
}
})
}
{
"langs": [
{
"name": "Alex",
"language": "Java"
},
{
"name": "Kris",
"language": "Scala"
},
{
"name": "Jorge",
"language": "Java"
}
]
}
{
"langs": {
"Java": {
"attendees": [
{
"name": "Alex"
},
{
"name": "Jorge"
}
]
},
"Scala": {
"attendees": [
{
"name": "Kris"
}
]
}
}
}