DataWeave 2.0否则条件

问题描述

对于Dataweave来说还很陌生,它尝试根据以下条件实现简单的if else条件

if (vars.country == "USA")
  { currency: "USD" }
else { currency: "EUR" }

这很好。但是,当我尝试使用以下其他json变量时,它会失败

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

解决方法

完成它的几种方法:

使用与您拥有的表达式类似的表达式,如果对象中包含多个字段,则必须将其包含在{}

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

使用++函数来连接对象heres the documentation

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

最后,使用conditional elements功能

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

选择一个喜欢的人。

,

您需要像这样用括号括住条件

%dw 2.0
output application/json encoding="UTF-8"
var country = "UK"
---
{
    Name: "ABC",(if (country == "USA") currency: "USD" else currency: "EUR")
}

输出

{
  "Name": "ABC","currency": "EUR"
}