我正在尝试将常规代码转换为DataWeave。我想根据条件将值存储在变量中。伪代码为-
payload map (value, index) -> (
if(condition) (
vars.variableName + {
"attribute1": "value1",
"attribute2": "value2",
"attribute3": "value3"
}
)
)
如你所见,我不想使用else部分。但是在DW中,其他部分是强制性的。
因此,有什么方法可以跳过else部分。我尝试了这个
if(condition)(
)else{}
OR
if(condition)(
)else""
但这会在变量中添加其他“”或{}
你可以只将else作为预先存在的变量,而无需对其添加任何内容(需要在此脚本之前初始化)。
payload map (value, index) -> (
if(condition) (
vars.variableName ++ {
"attribute1": "value1",
"attribute2": "value2",
"attribute3": "value3"
}
)
else vars.variableName
)
或者,如果尚未创建vars.variableName,则可以将其默认为空对象,以便稍后可以在另一个脚本中添加它。但是,如果尚未初始化变量,则中的条件if-else
必须将处理定向到该else
子句。否则,如果尝试将对象附加到变量上,则会收到错误消息null
。
payload map (value, index) -> (
if(condition) (
vars.variableName ++ {
"attribute1": "value1",
"attribute2": "value2",
"attribute3": "value3"
}
)
else vars.variableName default {}
)
BTW需要使用++
来组合对象