Contact Free trial Login

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 DataWeave 2.0 (%dw 2.0) is for Mule 4 apps. For a Mule 3 app, refer to DataWeave 1.0 (%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:

DataWeave Script:
%dw 2.0
output application/json
---
{
  "userId": payload.id default "0000",
  "userName": payload.name default "Undefined"
}

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.

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

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 Mule 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 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.

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