在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 pluck $$ map {}
中使用pluck运算符通过其键迭代HashMap。 - 将密钥转换为数字:
value1: ($ as :string) as :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 - 打印出值 1: $$ 的值为 :字符串, 值 2: $
更简单...
payload pluck (
{
value1:$$,
value2:$
}
)