%dw 2.0
output application/json
---
{
"userId": payload.id default "0000",
"userName": payload.name default "Undefined"
}
Set Default Values with DataWeave
Use one of the following methods to set default values when a payload value is absent or when the value is null
:
-
Using the
default
keyword -
Setting the default in an
if-else
orelse-if
statement -
Using
else
when pattern matching
Before you begin, note that DataWeave version 2 (%dw 2.0
) is for Mule 4 apps. For a
Mule 3 app, refer to DataWeave version 1
(%dw 1.0
) examples,
within the Mule 3.9 documentation set. For other Mule versions, you can use
the Mule Runtime version selector in the table of contents.
Example of Using the Keyword default to Set a Default Value
Consider a Mule application that expects a JSON input with fields id
and name
to do a transformation.
You can configure default values for these fields in case the fields are not present, or their value is null
. For example:
If the Mule application receives a JSON message with values set for the id
and name
fields, then the DataWeave transformation matches field id
to userId
and field name
to userName
.
{
"id": "123",
"name": "Max the Mule"
}
{
"userId": "123",
"userName": "Max the Mule"
}
However, if the Mule application receives a JSON message without the expected fields, or the fields have null
values, then the transformation uses the configured default values for fields userId
and userName
.
{
"id": null
}
{
"userId": "0000",
"userName": "Undefined"
}
Example of Using if-else and else-if Statements to Set Default Values
The following example sets United States
as the default value for userLocation
if it is not present, or its value is null
, in the JSON input message:
%dw 2.0
output application/json
---
if (payload.location != null) {
"userLocation" : payload.location
} else {
"userLocation" : "United States"
}
If the Mule application receives a JSON message with a value set for the location
field, then the DataWeave transformation matches field location
to userLocation
.
{
"location": "Argentina"
}
{
"userLocation": "Argentina"
}
However, if the Mule application receives a JSON message without the expected field, or the field is null
, then the transformation uses the configured default value for field userLocation
.
{}
{
"userLocation": "United States"
}
Example of Using Matching Patterns to Set Default Values
In pattern-matching scripts, DataWeave
case
statements end with an else
expression that can serve as the default
to return if all preceding case
expressions return false
.
%dw 2.0
var myVar = "someString"
output application/json
---
myVar match {
case myVarOne if (myVar == "some") -> ("some" ++ "is myVar")
case myVarOne if (myVar == "strings") -> ("strings" ++ "is myVar")
else -> myVar ++ " is myVar"
}
"someString is myVar"