mapObject

DataWeave 2.2 is compatible and bundled with Mule 4.2. Standard Support for Mule 4.2 ended on May 2, 2021, and this version of Mule will reach its End of Life on May 2, 2023, 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.

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

object

The object to map.

mapper

Expression or selector that provides the key, value, or index used for mapping the specified object into an output object.

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

%dw 2.0
output application/json
---
{"a":"b","c":"d"} mapObject (value,key,index) -> { (index) : { (value):key} }

Output

{ "0": { "b": "a" }, "1": { "d": "c" } }

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"}
    }
}

Input

<?xml version='1.0' encoding='UTF-8'?>
<prices>
    <basic>9.99</basic>
    <premium>53</premium>
    <vip>398.99</vip>
</prices>

Output

<?xml version='1.0' encoding='UTF-8'?>
<prices>
  <basic>14.99</basic>
  <premium>58.00</premium>
  <vip>403.99</vip>
</prices>

mapObject(Null, (value: Nothing, key: Nothing, index: Number) -> Nothing): Null

Helper function that allows mapObject to work with null values.

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>

Output

<?xml version='1.0' encoding='UTF-8'?>
<prices>
</prices>

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub