Example of Data weave Transformations 2.0 (dw 2.0)
Reading data from XML and generate JSON
%dw 2.0
output application/json
//Get List of Countries from the XML
var Countries = payload map ((payload01 , indexOfPayload01) -> {
Name: payload01.country
}) distinctBy $.Name
// Get list of States from the XML
var States = payload map ((payload01 , indexOfPayload01) -> {
Name: payload01.state,
Country: payload01.country
}) distinctBy $.Name
---
Form the Payload
The below does the list of things
· Loop through for each country
· Loop through for each states matching the country
· Loop through for each club matching the state
· Order by club name and state name
{
Countries: Countries map ((country , indexOfCountry) -> {
Name: country.Name,
StateProvinces: States filter ($.Country == country.Name) map ((state, indexOfState) -> {
Name: state.Name,
Clubs: payload filter ($.state == state.Name) map ((club, indexOfClub) -> {
ClubId: club.clubId,
Name: club.name,
City: club.city,
StateProvince: club.state,
StateProvinceAbbr: club.stateAbbr,
Country: club.country,
Level: club.membershipLevel,
TimeZone: club.timeZone
}) orderBy ($.Name)
}) orderBy ($.Name)
})
}
OUTPUT
{
"Countries": [
{
"Name": "USA",
"StateProvinces": [
{
"Name": "North Carolina",
"Clubs": [
{
"ClubId": 28743,
"Name": "Raleigh",
"City": "Raleigh",
"StateProvince": "North Carolina",
"StateProvinceAbbr": "NC",
"Country": "USA",
"Level": "Platinum",
"TimeZone": "America/New_York"
}
]
}
]
},
{
"Name": "INDIA",
"StateProvinces": [
{
"Name": "Tamil Nadu",
"Clubs": [
{
"ClubId": 372,
"Name": "Chennai Medavakkam",
"City": "Chennai",
"StateProvince": "Tamil Nadu",
"StateProvinceAbbr": "TN",
"Country": "INDIA",
"Level": "Platinum",
"TimeZone": "India/Chennai"
}
]
}
]
}
]
}
Jayaraman Pancharathinam
20 Nov 2018
good article, thanks for sharing. where is input xml
ReplyDeleteBermuda yurtdışı kargo
ReplyDeleteBonaire yurtdışı kargo
Bolivya yurtdışı kargo
Birleşik Arap Emirlikleri yurtdışı kargo
Bhutanya yurtdışı kargo
QX7WD
صيانة افران جدة 8gLGWxZqIZ
ReplyDelete