DataWeave 2.0 If else 条件

Ran*_*ddy 1 dataweave

我对 Dataweave 还很陌生,试图根据以下条件实现简单的 if else 条件

if (vars.country == "USA")
  { currency: "USD" }
else { currency: "EUR" }
Run Code Online (Sandbox Code Playgroud)

这工作正常。但是,当我尝试使用以下其他 json 变量时,它失败了

%dw 2.0
output application/json encoding="UTF-8"
---
Name: "ABC",
if (vars.country == "USA")
  { currency: "USD" }
else { currency: "EUR" }
Run Code Online (Sandbox Code Playgroud)

Geo*_*rge 8

完成它的几种方法:

使用与您所拥有的类似的表达式,{}当对象中有多个字段时,您必须将对象括起来

%dw 2.0
output application/json encoding="UTF-8"
---
{
  Name: "ABC",
  (if (vars.country == "USA")
     currency: "USD" 
   else  
     currency: "EUR")
}
Run Code Online (Sandbox Code Playgroud)

使用该++函数来连接对象,这里是文档

%dw 2.0
output application/json encoding="UTF-8"
---
{Name: "ABC"} ++ (
    if (vars.country == "USA")
        {currency: "USD"}
    else
        {currency: "EUR"}
)
Run Code Online (Sandbox Code Playgroud)

最后,使用条件元素功能

%dw 2.0
output application/json encoding="UTF-8"
---
{
    Name: "ABC",
    (currency: "USD") if (vars.country == "USA"),
    (currency: "EUR") if not (vars.country == "USA")
}
Run Code Online (Sandbox Code Playgroud)

选择你喜欢的那个。