0

我有一个输入 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、pluck 和 flatten 的不同选项,但无法得到解决方案。请帮助我使用转换功能。

4

2 回答 2

2

如果您想保留订单,您可以:

1)遍历reduce数组中每个对象的元素,累积data1data2

%dw 2.0
output application/json
---
payload reduce (item, acc = []) -> (acc << item.data1 << item.data2)

2) 使用map, 为数组中的每个元素创建一个中间数组,其中包含data1anddata2然后flatten那个。

%dw 2.0
output application/json
---
flatten (payload map (item) -> [item.data1, item.data2])
于 2019-05-09T17:15:17.197 回答
0

如果响应对象的顺序很重要:

%dw 2.0
output application/json
---
flatten (payload map (flatten $))

如果顺序不重要:

%dw 2.0
output application/json
---
payload.data1 ++ payload.data2
于 2019-05-09T11:31:13.227 回答