---
schema_version: "1"
id: 3cda66008e2747cfd43be703388520df71b222cada8f7e94e749a214f67c5d5e
title: read
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/2.3/dw-core-functions-read.md
canonical_url: https://docs.mulesoft.com/dataweave/2.3/dw-core-functions-read
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 734c4460e8af3412d241ca1d52a0250aafc7b22dc3067b1cf3fb8273208145f4
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
---
product: DataWeave
version: 2.3
---

# read

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

## read(String | Binary, String, Object): Any

Reads a string or binary and returns parsed content.

This function can be useful if the reader cannot determine the content type by default.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>stringToParse</code></p></td><td><p>The string or binary to read.</p></td></tr><tr><td><p><code>contentType</code></p></td><td><p>A supported format (or content type). Default: <code>application/dw</code>.</p></td></tr><tr><td><p><code>readerProperties</code></p></td><td><p>Optional: Sets reader configuration properties. For other formats and reader configuration properties, see <a href="https://docs.mulesoft.com/dataweave/latest/dataweave-formats">Supported Data Formats</a>.</p></td></tr></tbody></table>

### Example

This example reads a JSON object `{ "hello" : "world" }'`, and it uses the `"application/json"`
argument to indicate _input_ content type. By contrast, the `output application/xml` directive in
the header of the script tells the script to transform the JSON content into XML output. Notice that
the XML output uses `hello` as the root XML element and `world` as the value of that element. The
`hello` in the XML corresponds to the key `"hello"` in the JSON object, and `world` corresponds to
the JSON value `"world"`.

#### Source

```dw
%dw 2.0
output application/xml
---
read('{ "hello" : "world" }','application/json')
```

#### Output

```JSON
<?xml version='1.0' encoding='UTF-8'?><hello>world</hello>
```

### Example

This example reads a string as a CSV format without a header and transforms it to JSON. Notice that
it adds column names as keys to the output object. Also, it appends `[0]` to the function call here
to select the first index of the resulting array, which avoids producing the results within an array
(with square brackets surrounding the entire output object).

#### Source

%dw 2.0 var myVar = "Some, Body" output application/json
---

read(myVar,"application/csv",{header:false})\[0\]

#### Output

```JSON
{ "column_0": "Some", "column_1": " Body" }
```

### Example

This example reads the specified XML and shows the syntax for a reader property, in this case,
`{ indexedReader: "false" }`.

#### Source

```DataWeave
%dw 2.0
output application/xml
---
{
   "XML" : read("<prices><basic>9.99</basic></prices>",
                "application/xml",
                { indexedReader: "false" })."prices"
}
```

#### Output

```XML
<?xml version='1.0' encoding='UTF-8'?>
<XML>
  <basic>9.99</basic>
</XML>
```

### Example

This example returns the input parameter if it is in XML or JSON format, otherwise, it returns the
message `Not XML or JSON`. The example uses the `read` function to verify if the specified input
string is in XML or JSON.

#### Source

```DataWeave
%dw 2.0
import * from dw::Runtime
output application/dw
var xmlInput = "<Input><name>Max the Mule</name><ID>123</ID><Type>XML</Type></Input>"
var jsonInput = '{"Input": {"name": "Max the Mule", "ID": 123, "Type": "JSON"}}'
var stringInput = "name: Max the Mule, ID: 123, Type: String"
//This function returns the input parameter if it is in XML or JSON format, otherwise, it returns a static message
fun testType(inputMessage) =
    // Reads the input only if the data is in JSON format
    try(() -> read(inputMessage,"application/json"))
    // Reads the input only if the data is in XML format
    orElseTry(() -> read(inputMessage,"application/xml"))
    // Return this message if the input data is not either in XML or JSON format
    orElse("Not XML or JSON")
---
{
    "Test 'xmlInput' ": testType(xmlInput),
    "Test 'jsonInput' ": testType(jsonInput),
    "Test 'stringInput' ": testType(stringInput),
}
```

#### Output

```dataweave
{
  "Test 'xmlInput' ": {
    Input: {
      name: "Max the Mule",
      ID: "123",
      Type: "XML"
    }
  },
  "Test 'jsonInput' ": {
    Input: {
      name: "Max the Mule",
      ID: 123,
      Type: "JSON"
    }
  },
  "Test 'stringInput' ": "Not XML or JSON"
}
```
