【问题标题】:Mulesoft Dataweave Converting the key of a mapObject to lower caseMulesoft Dataweave 将 mapObject 的键转换为小写
【发布时间】:2018-08-01 05:56:36
【问题描述】:

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

【问题讨论】:

    标签: mule mule-studio dataweave


    【解决方案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')]
    

    希望有帮助!

    【讨论】:

    • 感谢您提供此信息。这就像一个魅力。即使我在 DW 中也遇到了这个错误。但是在运行时它工作正常
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2022-12-18
        • 2017-12-23
        • 2016-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多