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

In Mule/Dataweave how do I transform a HashMap into a Array when both key & value are numbers

在Mule/Dataweave中我如何convert/transform将一个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 转换为 Array,我将执行以下步骤:

  1. 在 DataWeave 中使用 pluck 运算符通过其 key 迭代 HashMap:payload pluck $$ map {}
  2. key 转换为 number: value1: ($ as :string) as :number
  3. 根据 key 获取值: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 - 打印出值 value1: $$ as :string, value2: $

更简单...

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