Объединение элементов массива и переформатирование вывода - PullRequest
0 голосов
/ 09 мая 2019

У меня есть входной JSON, который я хотел бы преобразовать с помощью Muwe's 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"
  }
]

Я пробовал разные варианты, используя карту, собирай и сглаживай, но не смог найти решение.Пожалуйста, помогите мне с функцией преобразования для этого.

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Если вы хотите сохранить порядок, вы можете:

1) Проходить элементы с reduce и для каждого объекта в массиве накапливать data1 и data2

* 1007.*

2) Используя map, для каждого элемента в массиве создайте промежуточный массив, содержащий data1 и data2, а затем flatten that.

%dw 2.0
output application/json
---
flatten (payload map (item) -> [item.data1, item.data2])
0 голосов
/ 09 мая 2019

Если важен порядок объектов в ответе:

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

Если порядок не важен:

%dw 2.0
output application/json
---
payload.data1 ++ payload.data2
...