我有这样的代码
{name: 'Data Weave'} mapObject {(upper $$ ) : $}
动态获取地图对象和大写字母键。下面是输出
{
"NAME": "Data Weave"
}
当我删除括在“ upper”关键字中的括号时。数据编织会引发这样的错误。
我在数据编织语言中的括号中的确切位置使用语法感到困惑。在上面的代码中,为什么需要使用括号。编译器如何解释括号之间的条件或表达式。
答案 0 :(得分:5)
%dw 2.0
output application/json
---
{name: 'Data Weave'} mapObject {(upper($$) ) : $}
我想您只是忘记了括号,而不是上层功能。 仍然需要对DW括号括起来,密钥不是静态的而是动态评估的。 总结一下:
upper($$)
将您的$$大写=>括号在此处用于将参数传递给函数(upper($$))
,因为键是求值的结果=>括号在这里用于求值并返回结果答案 1 :(得分:1)
AFAIK在DW中用括号表示三种不同的含义:
1)优先级运算符,例如(1 + 1) * 10
2)现场评估人员,您的用例以及@Sebastien Colas描述的内容。
3)当对象和对象数组在{}
内自己出现时,将对象的析构函数和对象数组分解为成对的键和值:
%dw 2.0
output application/dw
var d = [
{
a: 1,
b: 2,
c: 3
},
{
d: 4,
e: 5
}
]
---
[
{
(d)
},
{
(d[1]),
f: 6
}
]