%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 2.x versions of DataWeave are used by Mule 4 apps. For DataWeave in Mule 3 apps, refer to DataWeave version 1.2 examples. For other DataWeave versions, you can use the version selector in the DataWeave table of contents.
Example of Using the Keyword default to Set a Default Value
Consider an 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 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 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 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 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"