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 or else-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:

DataWeave Script:
%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.

Input JSON Payload:
{
  "id": "123",
  "name": "Max the Mule"
}
Output JSON:
{
  "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.

Input JSON Payload:
{
  "id": null
}
Output JSON:
{
  "userId": "0000",
  "userName": "Undefined"
}

Example of Using if-else and else-if Statements to Set Default Values

Another method for providing a default value is using if-else and else-if.

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:

DataWeave Script:
%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.

Input JSON Payload:
{
  "location": "Argentina"
}
Output JSON:
{
  "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.

Input JSON Payload:
{}
Output JSON:
{
  "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.

DataWeave Script:
%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"
}
Output JSON:
"someString is myVar"

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub