%dw 2.0
output application/json indent = false
---
{
hello : "world",
bello : "world",
mello : "world"
}
Set Reader and Writer Configuration Properties
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.
Use a Writer Property in an Output Directive
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.
{"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
Use Reader and Writer Properties in DataWeave Functions
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
: