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

Java 在Mule/Dataweave中,当key和value都是数字时,如何将HashMap转换为数组,java,mule,mule-studio,anypoint-studio,dataweave,Java,Mule,Mule Studio,Anypoint Studio,Dataweave,在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

在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转换为数组,我将执行以下步骤:

在DataWeave:payload pullc$$map{}中使用pullc操作符通过其键迭代HashMap 将键转换为number:value1:$as:string作为:number 基于该键获取值: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:$
    }
)

令人惊叹的完美的解决方案。我还用实际的编织代码提问。