Getting started Community Training Tutorials Documentation APIs, AI & Tools
%dw 2.0
output application/json indent = false
---
{
hello : "world",
bello : "world",
mello : "world"
}
DataWeave provides configuration properties for data formats, such as JSON (application/json), XML (application/xml), and (application/csv). The properties change the behavior of DataWeave readers and writers for those formats. For example, the default separator for a CSV reader is a comma (,). You can use the format’s separator property to specify a different separator for CSV content.
Refer to DataWeave Formats for more details on available reader and writer properties for various data formats.
The following example shows how to append writer properties to the DataWeave output directive. The script uses indent = false to compress the JSON output into a single line.
%dw 2.0
output application/json indent = false
---
{
hello : "world",
bello : "world",
mello : "world"
}
{"hello": "world","bello": "world","mello": "world"}
The following examples also append writer configuration properties to the output directive:
Avro example that uses schemaUrl
Excel (XLSX) example that uses header=true
Flat File example that sets a schemaPath
XML example that uses inlineCloseOn="empty" to close any empty XML elements
The DataWeave read, readUrl, and write functions accept one or more comma-separated property configurations within curly braces.
In the header of the following script, the value of myVar is a read function that inputs an XML sample with an empty child element (<ex1></ex1>). The function passes an XML reader property {nullValueOn: "empty"} that converts the value of the empty element to null.
In the body of the script, a write function accepts the value of myVar as input. The function passes the JSON writer properties {skipNullOn:"objects", writeAttributes:true} to skip the object with the null value (<ex1>null</ex1>) and to write the attribute and value of <ex3 a='greeting'>hello</ex3>.
%dw 2.0
var myVar = read("<greeting><ex1></ex1><ex2>hello</ex2><ex3 a='greeting'>hello</ex3></greeting>", "application/xml", {nullValueOn: "empty"})
output application/json with binary
---
write(myVar.greeting, "application/json", {skipNullOn:"objects", writeAttributes:true})
{
"ex2": "hello",
"ex3": {
"@a": "greeting",
"__text": "hello"
}
}
The following examples pass reader properties to readUrl: