Hear from Salesforce leaders on how to create and deploy Agentforce agents.
Contact Us 1-800-596-4880

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

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

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"
}
json
Output JSON:
{
  "userId": "123",
  "userName": "Max the Mule"
}
json

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
}
json
Output JSON:
{
  "userId": "0000",
  "userName": "Undefined"
}
json

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"
}
dataweave

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"
}
json
Output JSON:
{
  "userLocation": "Argentina"
}
json

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:
{}
json
Output JSON:
{
  "userLocation": "United States"
}
json

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"
}
dataweave
Output JSON:
"someString is myVar"
json