跳过 dataweave 2.0 中的其他部分
Skipping else part in dataweave 2.0
我正在尝试将 groovy 代码转换为 DataWeave。我正在尝试根据条件将值存储在变量中。
伪代码为-
payload map (value, index) -> (
if(condition) (
vars.variableName + {
"attribute1": "value1",
"attribute2": "value2",
"attribute3": "value3"
}
)
)
如您所见,我不想使用 else 部分。但在 DW else 部分是强制性的。
所以,有什么办法可以跳过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 {}
)
顺便说一句,需要使用++
来组合对象
也许您需要添加一个输入和一个相应的输出,以便我们可以提供帮助more/better。
现在回答您的问题:DW if-expression
只是一个表达式,它必须 return 一个值,因此 else
必须在那里。
根据你的表情,你可以这样做:
if (condition) (
vars.variableName + {attribute1: "value1"}
) else (
vars.variableName
)
我不确定这是否有效,除非你的输出目标是变量。
我正在尝试将 groovy 代码转换为 DataWeave。我正在尝试根据条件将值存储在变量中。 伪代码为-
payload map (value, index) -> (
if(condition) (
vars.variableName + {
"attribute1": "value1",
"attribute2": "value2",
"attribute3": "value3"
}
)
)
如您所见,我不想使用 else 部分。但在 DW else 部分是强制性的。
所以,有什么办法可以跳过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 {}
)
顺便说一句,需要使用++
来组合对象
也许您需要添加一个输入和一个相应的输出,以便我们可以提供帮助more/better。
现在回答您的问题:DW if-expression
只是一个表达式,它必须 return 一个值,因此 else
必须在那里。
根据你的表情,你可以这样做:
if (condition) (
vars.variableName + {attribute1: "value1"}
) else (
vars.variableName
)
我不确定这是否有效,除非你的输出目标是变量。