Contact Us 1-800-596-4880

mapObject

mapObject<K, V>(@StreamCapable object: { (K)?: V }, mapper: (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(value: Null, mapper: (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>

Output

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