%dw 2.0
output application/json
---
payload[0] map (bookListing) -> using (id = bookListing.bookId) {
bookId: id,
title: bookListing.title,
price: bookListing.price as Number,
(payload[1] filter ($.*bookId contains id) map (bookAuthor) -> {
author:bookAuthor.author
})
}
Merge Multiple Payloads
DataWeave 2.1 is compatible with Mule 4.1. Standard Support for Mule 4.1 ended on November 2, 2020, and this version of Mule will reach its End of Life on November 2, 2022, when Extended Support ends. Deployments of new applications to CloudHub that use this version of Mule are no longer allowed. Only in-place updates to applications are permitted. MuleSoft recommends that you upgrade to the latest version of Mule 4 that is in Standard Support so that your applications run with the latest fixes and security enhancements. |
This DataWeave example deals with an input that contains a collection of collections. The first payload index payload[0]
lists price by book, and the second payload[1]
lists authors by book, where each book can be identified by a unique bookId
key. This transformation merges both payload array elements into one, matching their keys, where one book may have several authors.
Note that this is not the same as having as an input a single payload that consists of an array. Here, payload is an array of arrays. |
It uses these functions:
-
map
goes through the elements of the first payload element (payload[0]
). While on each element, a secondmap
function goes through the elements of the second payload (payload[1]
) that match the filter criteria. -
using
defines a shorter alias within the scope of the mainmap
function. -
filter
limits the scope of the secondmap
function to only objects that share the samebookId
as is currently being processed by the firstmap
function. In that way, only relevant authors for each are listed in the output.
[
{ "bookId":"101",
"title":"world history",
"price":"19.99"
},
{
"bookId":"202",
"title":"the great outdoors",
"price":"15.99"
}
]
[
{
"bookId":"101",
"author":"john doe"
},
{
"bookId":"202",
"author":"jane doe"
}
]
[
{
"bookId": "101",
"title": "world history",
"year": "2017",
"isbn": "11111",
"price": "19.99",
"author": "john doe"
},
{
"bookId": "202",
"title": "the great outdoors",
"year": "2016",
"isbn": "22222",
"price": "15.99",
"author": "jane doe"
}
]