问题描述
我有这样的输入:
{
Abc: "1",BcD: "2",...
klm: "3",ZXC: "4"
}
我想像这样转换后得到输出:
{
abc: "1",bcD: "2",zXC: "4"
}
我该怎么做? 已经这样试过了:
%dw 1.0
%output application/json
---
{
($$) replace /^([A-Z])/ with lower $$[1] : $
}
但出现错误:
没有名为“$$”的变量
解决方法
试试这个:
输入
{
"Abc": "1","BcD": "2","klm": "3","ZXC": "4"
}
脚本
%dw 1.0
%input payload application/json
%output application/json
---
payload mapObject {
(lower ($$)[0] ++ (($$)[1 to -1])):$
}
输出
{
"abc": "1","bcD": "2","zXC": "4"
}
,
您必须使用 mapObject 来更改键。请注意,$$
仅在某些运算符的上下文中有意义。您需要将整个键表达式放在括号之间。我改用了模式匹配。
示例:
%dw 1.0
%output application/java
%function lowerFirst(s)
s[0] match {
'A' -> 'a' ++ s[1..-1],'B' -> 'b' ++ s[1..-1],// add other letters mapping
default -> s
}
---
payload mapObject (lowerFirst($$)): $
注意需要完成函数中的字母映射。