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

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