%dw 2.0
output application/json
---
{"a":"b","c":"d"} mapObject (value,key,index) -> { (index) : { (value):key} }
DataWeave
mapObject
mapObject({ (K)?: V }, (value: V, key: K, index: Number) -> Object): Object
Iterates over an object using a mapper that acts on keys, values, or indices of that object.
Parameters
Name | Description |
---|---|
|
The object to map. |
|
Expression or selector that provides the |
Example
This example iterates over the input { "a":"b","c":"d"}
and uses the
anonymous mapper function ((value,key,index) → { (index) : { (value):key} }
)
to invert the keys and values in each specified object and to return the
indices of the objects as keys. The mapper uses named parameters to identify
the keys, values, and indices of the input object. Note that you can write
the same expression using anonymous parameters, like this:
{"a":"b","c":"d"} mapObject { ($$$) : { ($):$$} }
Source
Output
{ "0": { "b": "a" }, "1": { "d": "c" } }
JSON
Example
This example increases each price by 5 and formats the numbers to always include 2 decimals.
Source
%dw 2.0
output application/xml
---
{
prices: payload.prices mapObject (value, key) -> {
(key): (value + 5) as Number {format: "##.00"}
}
}
DataWeave
Input
<?xml version='1.0' encoding='UTF-8'?>
<prices>
<basic>9.99</basic>
<premium>53</premium>
<vip>398.99</vip>
</prices>
XML
Output
<?xml version='1.0' encoding='UTF-8'?>
<prices>
<basic>14.99</basic>
<premium>58.00</premium>
<vip>403.99</vip>
</prices>
XML
mapObject(Null, (value: Nothing, key: Nothing, index: Nothing) -> Any): Null
Helper function that enables mapObject
to work with a null
value.
Example
Using the previous example, you can test that if the input of the mapObject
is null
, the output result is null
as well. In XML null
values are
written as empty tags. You can change these values by using the writer
property writeNilOnNull=true
.
Input
<?xml version='1.0' encoding='UTF-8'?>
<prices>
</prices>
XML
Output
<?xml version='1.0' encoding='UTF-8'?>
<prices>
</prices>
XML