我有一个输入JSON,我想使用Mule的dataweave 2.0进行转换。
下面是输入的JSON。
[
{
"data1": {
"role": "analyst",
"name": "ABC"
},
"data2": {
"role": "analyst",
"name": "DEF"
}
},
{
"data1": {
"role": "RM",
"name": "PQRS"
},
"data2": {
"role": "analyst",
"name": "QWE"
}
}
]
我们希望输出如下:
[
{
"role": "analyst",
"name": "ABC"
},
{
"role": "analyst",
"name": "DEF"
},
{
"role": "RM",
"name": "PQRS"
},
{
"role": "analyst",
"name": "QWE"
}
]
我尝试了使用map,pluc和flatten的其他选项,但无法获得解决方案。请为我提供转换功能。
答案 0 :(得分:1)
如果要保留订单,可以:
1)使用reduce
遍历元素,并对数组中的每个对象累积data1
和data2
%dw 2.0
output application/json
---
payload reduce (item, acc = []) -> (acc << item.data1 << item.data2)
2)使用map
,为数组中的每个元素创建一个包含data1
和data2
,然后flatten
的中间数组。
%dw 2.0
output application/json
---
flatten (payload map (item) -> [item.data1, item.data2])
答案 1 :(得分:0)
如果对象的响应顺序很重要:
%dw 2.0
output application/json
---
flatten (payload map (flatten $))
如果顺序不重要:
%dw 2.0
output application/json
---
payload.data1 ++ payload.data2