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

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