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

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