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

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