首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataWeave 2.0 If else条件

DataWeave 2.0 If else条件
EN

Stack Overflow用户
提问于 2020-09-24 02:01:46
回答 2查看 2.6K关注 0票数 1

我是Dataweave的新手,试着根据下面的条件实现简单的if else条件

代码语言:javascript
复制
if (vars.country == "USA")
  { currency: "USD" }
else { currency: "EUR" }

这可以很好地工作。但是,当我尝试其他json变量时,如下所示,它失败了

代码语言:javascript
复制
%dw 2.0
output application/json encoding="UTF-8"
---
Name: "ABC",
if (vars.country == "USA")
  { currency: "USD" }
else { currency: "EUR" }
EN

回答 2

Stack Overflow用户

发布于 2020-09-24 02:20:12

以下是几种完成任务的方法:

使用与已有内容类似的表达式,当对象中包含多个字段时,必须将这些对象包含在{}

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

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

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

最后,使用conditional elements特性

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

选一个你喜欢的。

票数 8
EN

Stack Overflow用户

发布于 2020-09-24 02:09:28

您需要将条件括在括号中,如下所示

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

输出

代码语言:javascript
复制
{
  "Name": "ABC",
  "currency": "EUR"
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64033801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档