Getting started Community Training Tutorials Documentation APIs, AI & Tools
%dw 2.0
output application/json
---
{
"userId": payload.id default "0000",
"userName": payload.name default "Undefined"
}
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 or else-if statement
Using else when pattern matching
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:
%dw 2.0
output application/json
---
{
"userId": payload.id default "0000",
"userName": payload.name default "Undefined"
}
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"
}
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"
}
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"