Mulesoft Dataweave 将 mapObject 的键转换为小写

Mulesoft Dataweave Converting the key of a mapObject to lower case

假设以下 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 '$$':$
)

如果将表达式括在括号中,您尝试的 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')]

希望对您有所帮助!

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

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

此外,如果还需要小写一个值,那么它会像:

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