首页 > 解决方案 > 组合数组的元素并重新格式化输出

问题描述

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

标签: muledataweavemule4

解决方案


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

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])

推荐阅读