---
schema_version: "1"
id: 028431aa5234296f6555f950e82d14e5ab9c820297733836f1afd2723b43dd3f
title: Transform XML to JSON
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/2.6/dataweave-cookbook-perform-basic-transformation.md
canonical_url: https://docs.mulesoft.com/dataweave/2.6/dataweave-cookbook-perform-basic-transformation
source_site: docs.mulesoft.com
content_type: documentation
content_hash: e6d575b900a31767641d1d969ea3b38efccdb0c6bab013354ee15b1fb8f077f1
description: MuleSoft Documentation Site
release: "2.6"
latest: false
---
---
product: DataWeave
version: 2.6
keywords: studio, anypoint, transform, transformer, format, xml, json, dataweave, data weave, datamapper, dwl, dfl, dw, output structure, input structure
---

# Transform XML to JSON

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

These simple DataWeave examples change the XML input to JSON output. Note that more complex
transformations usually require the use of the `map` or `mapObject` function.

The following DataWeave script maps the names (or keys) for the output fields to values of the input
fields. The input fields are specified with selector expressions without any functions. The script
also changes the order and names of some of the fields.

DataWeave Script:

```dataweave
%dw 2.0
output application/json
---
{
        address1: payload.order.buyer.address,
        city: payload.order.buyer.city,
        country: payload.order.buyer.nationality,
        email: payload.order.buyer.email,
        name: payload.order.buyer.name,
        postalCode: payload.order.buyer.postCode,
        stateOrProvince: payload.order.buyer.state
}
```

Input XML Payload:

```xml
<?xml version='1.0' encoding='UTF-8'?>
<order>
  <product>
    <price>5</price>
    <model>MuleSoft Connect 2016</model>
  </product>
  <item_amount>3</item_amount>
  <payment>
    <payment-type>credit-card</payment-type>
    <currency>USD</currency>
    <installments>1</installments>
  </payment>
  <buyer>
    <email>mike@hotmail.com</email>
    <name>Michael</name>
    <address>Koala Boulevard 314</address>
    <city>San Diego</city>
    <state>CA</state>
    <postCode>1345</postCode>
    <nationality>USA</nationality>
  </buyer>
  <shop>main branch</shop>
  <salesperson>Mathew Chow</salesperson>
</order>
```

Output JSON:

```json
{
  "address1": "Koala Boulevard 314",
  "city": "San Diego",
  "country": "USA",
  "email": "mike@hotmail.com",
  "name": "Michael",
  "postalCode": "1345",
  "stateOrProvince": "CA"
}
```

In the following example, the DataWeave script transforms the XML containing multiple XML nodes with
the same key into a valid JSON creating an array instead of creating JSON nodes with the same key.

DataWeave Script:

```dataweave
%dw 2.0
output application/json duplicateKeyAsArray=true
---
payload
```

Input XML Payload:

```xml
<order>
  <product-lineitems>
	<product-lineitem>
	   <net-price>100.0</net-price>
	</product-lineitem>
	<product-lineitem>
	     <net-price>498.00</net-price>
	</product-lineitem>
  </product-lineitems>
</order>
```

Output JSON:

```json
{
  "order": {
    "product-lineitems": {
      "product-lineitem": [
        {
          "net-price": "100.0"
        },
        {
          "net-price": "498.00"
        }
      ]
    }
  }
}
```

## Related Examples

- [Extract Data](https://docs.mulesoft.com/dataweave/2.6/dataweave-cookbook-extract-data)

- [Map Data with DataWeave](https://docs.mulesoft.com/dataweave/2.6/dataweave-cookbook-map)

- [Rename Keys](https://docs.mulesoft.com/dataweave/2.6/dataweave-cookbook-rename-keys)

## See Also

- [DataWeave Types](https://docs.mulesoft.com/dataweave/2.6/dataweave-types)

- [DataWeave Selectors](https://docs.mulesoft.com/dataweave/2.6/dataweave-selectors)

- [DataWeave Cookbook](https://docs.mulesoft.com/dataweave/2.6/dataweave-cookbook)
