デフォルト値の設定方法

DataWeave 2.2 は Mule 4.2 と互換性があり、Mule 4.2 にバンドルされています。 このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポート​が終了しました。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

ペイロード値がない場合やその値が ​null​ である場合にデフォルト値を設定するには次のいずれかの方法を使用します。

  • default​ キーワードを使用する。

  • if-else​ または ​else-if​ ステートメントでデフォルトを設定する。

  • パターンを照合するときに ​else​ を使用する。

開始する前に、DataWeave バージョン 2 (​%dw 2.0​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave 1.0 (​%dw 1.0​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。

キーワード default を使用したデフォルト値設定の例

項目 ​id​ と ​name​ を含む JSON 入力を想定し、変換を行う Mule アプリケーションについて考えます。 これらの項目が存在しないか、値が ​null​ である場合のデフォルト値を設定できます。たとえば、次のようにします。

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

この Mule アプリケーションが ​id​ 項目と ​name​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって項目 ​id​ が ​userId​ に照合され、項目 ​name​ が ​userName​ に照合されます。

例: 入力 JSON

{
  "id": "123",
  "name": "Max the Mule"
}

例: 変換出力

{
  "userId": "123",
  "userName": "Max the Mule"
}

ただし、Mule アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​null​ である場合は、変換では項目 ​userId​ と ​userName​ に設定されたデフォルト値が使用されます。

例: 入力 JSON

{
  "id": null
}

例: 変換出力

{
  "userId": "0000",
  "userName": "Undefined"
}

if-else と else-if ステートメントを使用したデフォルト値設定の例

デフォルト値を設定する別の方法は、​if-else​ と ​else-if​ を使用するものです。

次の例では、JSON 入力メッセージの ​userLocation​ が存在しない場合やその値が ​null​ である場合にデフォルト値として ​United States​ を設定します。

%dw 2.0
output application/json
---
if (payload.location != null) {
	"userLocation" : payload.location
} else {
	"userLocation" : "United States"
}

この Mule アプリケーションが ​location​ 項目に値が設定された JSON メッセージを受信すると、DataWeave 変換によって項目 ​location​ が ​userLocation​ に照合されます。

例: 入力 JSON

{
  "location": "Argentina"
}

例: 変換出力

{
  "userLocation": "Argentina"
}

ただし、Mule アプリケーションが受信した JSON メッセージに想定される項目がない場合や項目の値が ​null​ である場合は、変換では項目 ​userLocation​ に設定されたデフォルト値が使用されます。

例: 入力 JSON

{}

例: 出力 JSON

{
  "userLocation": "United States"
}

照合パターンを使用したデフォルト値設定の例

パターンを照合するスクリプト​の場合、DataWeave の ​case​ ステートメントは ​else​ 式で終了します。これは、先行するすべての ​case​ 式で ​false​ が返された場合に返されるデフォルトとして機能します。

例: DataWeave スクリプト

%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"