---
schema_version: "1"
id: 5b0a465b3f5aeb84b22c1988726cdbe1d0c910149eb7ee2f11e24cbe5e1be1d0
title: mapObject
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/2.11/dw-core-functions-mapobject.md
canonical_url: https://docs.mulesoft.com/dataweave/2.11/dw-core-functions-mapobject
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c841a3dc2906df51cbb506ba2ecf787fb581444581bb4dce4991e9a80d8b6c05
description: MuleSoft Documentation Site
release: "2.11"
latest: false
---
---
product: DataWeave
version: 2.11
---

# mapObject

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

## 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

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>object</code></p></td><td><p>The object to map.</p></td></tr><tr><td><p><code>mapper</code></p></td><td><p>Expression or selector that provides the <code>key</code>, <code>value</code>, or <code>index</code> used for mapping the specified object into an output object.</p></td></tr></tbody></table>

### 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

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

#### Output

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

### Example

This example increases each price by 5 and formats the numbers to always include 2 decimals.

#### Source

```DataWeave
%dw 2.0
output application/xml
---
{
    prices: payload.prices mapObject (value, key) -> {
        (key): (value + 5) as Number {format: "##.00"}
    }
}
```

#### Input

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

#### Output

```XML
<?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
<?xml version='1.0' encoding='UTF-8'?>
<prices>
</prices>
```

#### Output

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