Mulesoft Dataweave将mapObject的键转换为小写

时间:2018-02-21 15:24:10

标签: mule mule-studio dataweave

假设以下json的KEY1和KEY2为大写字母。 KEY1和KEY2需要转换为小写

 {
    "KEY1": {
        "subkey1": "subval1",
        "subkey2": "subval2"
    },
    "KEY2": {
        "subkey1": "subval1",
        "subkey2": "subval2"
    }
  }

这需要使用数据编织转换为以下json。

 {
    "key1": {
        "subkey1": "subval1",
        "subkey2": "subval2"
    },
    "key2": {
        "subkey1": "subval1",
        "subkey2": "subval2"
    }
  }

我尝试了以下DW语法,但它不起作用

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

3 个答案:

答案 0 :(得分:1)

如果将表达式包装在括号中,那么您尝试过的DW应该可以正常工作。这可确保首先将lower运算符应用于每个键,然后在映射中使用该值。所以对你的例子来说:

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

有趣的是,我使用这种DW语法在我的转换消息中得到了一个错误(mismatched input ':' expecting ')'),但我能够在没有来自Anypoint Studio的投诉的情况下运行该项目,并且DW运行正常。它还可以在MEL中使用以下内容:

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

希望有所帮助!

答案 1 :(得分:0)

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

B

答案 2 :(得分:0)

此外,如果还需要小写一个值,则其将类似于:

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