在 dataweaver 1.0 中是否可以将键名的首字母大写,而不是值?

问题描述

我有这样的输入:

{
 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($$)): $

注意需要完成函数中的字母映射。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...