Mulesoft Dataweave将mapObject的键转换为小写

Mulesoft Dataweave将mapObject的键转换为小写,mule,mule-studio,dataweave,Mule,Mule Studio,Dataweave,假设下面的json带有大写的KEY1和KEY2。键1和键2需要转换为小写 { "KEY1": { "subkey1": "subval1", "subkey2": "subval2" }, "KEY2": { "subkey1": "subval1", "subkey2": "subval2" } } 需要使用data weave将其转换为以下json { "key1": {

假设下面的json带有大写的KEY1和KEY2。键1和键2需要转换为小写

 {
    "KEY1": {
        "subkey1": "subval1",
        "subkey2": "subval2"
    },
    "KEY2": {
        "subkey1": "subval1",
        "subkey2": "subval2"
    }
  }
需要使用data weave将其转换为以下json

 {
    "key1": {
        "subkey1": "subval1",
        "subkey2": "subval2"
    },
    "key2": {
        "subkey1": "subval1",
        "subkey2": "subval2"
    }
  }
我尝试了以下DW语法,但没有成功

result : payload mapObject (
  lower '$$':$
)

如果将表达式括在括号中,则尝试的DW应该可以工作。这可确保首先对每个键应用
lower
运算符,然后在地图中使用该值。以你为例:

%dw 1.0
%output application/json
---
{
    result : payload mapObject (
        (lower '$$') : $
    )
}
有趣的是,我在使用此DW语法的转换消息中得到了一个错误(
输入不匹配“:“期望”)”
),但我能够运行该项目,而无需Anypoint Studio的投诉,并且DW运行良好。它在MEL中也适用于以下情况:

#[dw("{result : payload mapObject ( (lower  '$$' ) : $)}", 'application/json')]

希望有帮助

您可以使用以下方法解决此问题

%dw 2.0
output application/json
---
{ result: payload mapObject (
    (lower ('$$')): $
)
}

此外,如果需要小写a值,则其如下所示:

%dw 1.0
%output application/json
---
{
    result : payload mapObject (
        (lower $$) : (lower $)
    )
}

谢谢你提供这个。这很有魅力。甚至我在DW中也会犯这个错误。但在运行时,它工作得很好