我需要将一个常规代码映射到dataweave中。现有的常规代码类似于伪示例,因为-
if(condition) {
payload.each { data -> {
function1(data.attributes)
function2(data.attributes)
if(condition) {set flag}
}
if(flag is set) {return payload}
else {return errorMessage}
}
}
function1(data) {if(condition) {return errorMessage} else {return data}}
function2(data) {if(condition) {return errorMessage} else {return data}}
将输入有效负载视为-
[
{
"attribute1": "value1",
"attribute2": "value2",
"attribute3": "value3",
"attribute4": "value4",
},
{
"attribute1": "value5",
"attribute2": "value6",
"attribute3": "value7",
"attribute4": "value8",
}
]
输出是一个JSON数组,它依赖于flag变量。如果设置了该标志,则输出JSON数组将与errorMessage有关,否则将传递原始有效负载。有没有一种方法可以将其转换为数据编织,而无需使用很多额外的m子进程?
提前致谢
假设你有一个名为flag的变量(正确表示成功,错误表示错误)和一个包含错误消息的变量,则可以使用以下DataWeave表达式:
%dw 2.0
output application/json
---
if (vars.flag == true)
payload
else
{
errorMessage: vars.errorMessage
}
如果vars.flag的值为true,则DataWeave表达式将按原样返回有效负载。否则,它将返回类似于以下内容的JSON对象:
{
"errorMessage": "An error occurred"
}
我必须在同一个dw中处理不同的变量。这提供了一些见解。谢谢
在某些情况下,您可能需要使用脚本上部(上方
---
)的变量来适应某些条件,或者将逻辑包装到函数中以使代码易于阅读。为此,do { --- }
范围也是有用的。