在Mule/Dataweave中,当键和值都是数字时,如何将HashMap转换为数组



在Mule/Dataweave中,如何将HashMap转换/转换为数组。我有一个HashMap,它的键和值是动态数字。

例:

{"3.2" : 1, "22" : 8, "2.0" : 1}

我想将其转换为此结构:

[
  {
    "name": "app-a",
    "value1": 3.2,
    "value2": 1
  },
  {
    "name": "app-a",
    "value1": 22,
    "value2": 8
  },
  {
    "name": "app-a",
    "value1": 2,
    "value2": 1
  }
]

解决方案(得益于 @Sulthony H(

%dw 1.0
%output application/json
---
payload pluck $$ map {
value1: ($ as :string) as :number,
value2: payload[$]
}

为了将HashMap转换为数组,我将执行以下步骤:

  1. 在DataWeave:payload pluck $$ map {}中使用pluck运算符通过其迭代HashMap。
  2. 密钥转换为数字value1: ($ as :string) as :number
  3. 根据该获取值:value2: payload[$]

另一种不同的解决方案:

%dw 1.0
%output application/json
---
payload map {
    ($ mapObject {
        name: "app-a",
        value1: $$ as :string,
        value2: $
    })
}

1 - 使用 map 运算符迭代元素列表。 有效负载地图

2 - 在数组的每个元素上使用 mapObject $ mapObject。对于mapObject,$$表示键名,$表示值

3 - 打印出值 1: $$ 的值为 :字符串, 值 2: $

更简单...

payload pluck (
    {
        value1:$$,
        value2:$
    }
)

最新更新