Вложенный цикл для создания массива json

У меня есть требование ввести два объекта в массив json для каждого объекта на входе.

Для этого я написал следующий код:

%dw 2.0
output application/csv
var categoryList = ["Business","Authorization"]
---
payload map((payload01,indexOfPayload01)->
categoryList map((payload02,indexOfPayload02)->
    {
    "Name": payload01.Name,
    "Category":payload02,
    "Code":"Customer",
    "Percentage":null,
    "End Tag": "End"
    })
)

Мой вывод:

[
  [
    {
      "Name": "Desc 1",
      "Category": "Business",
      "Code": "Customer",
      "Percentage": null,
      "End Tag": "END"
    },
    {
      "Name": "Desc 1",
      "Category": "Authorization",
      "Code": "Customer",
      "Percentage": null,
      "End Tag": "END"
    }
  ],
  [
    {
      "Name": "Desc 2",
      "Category": "Business",
      "Code": "Customer",
      "Percentage": null,
      "End Tag": "END"
    },
    {
      "Name": "Desc 2",
      "Category": "Authorization",
      "Code": "Customer",
      "Percentage": null,
      "End Tag": "END"
    }
  ]
]

Но мне нужны значения в виде единого массива json. Здесь данные были разделены как два объекта. Мой ожидаемый результат:

[
    {
      "Name": "Desc 1",
      "Category": "Business",
      "Code": "Customer",
      "Percentage": null,
      "End Tag": "END"
    },
    {
      "Name": "Desc 1",
      "Category": "Authorization",
      "Code": "Customer",
      "Percentage": null,
      "End Tag": "END"
    },
    {
      "Name": "Desc 2",
      "Category": "Business",
      "Code": "Customer",
      "Percentage": null,
      "End Tag": "END"
    },
    {
      "Name": "Desc 2",
      "Category": "Authorization",
      "Code": "Customer",
      "Percentage": null,
      "End Tag": "END"
    }
]

Как я могу это сделать? Излишне говорить, что я новичок в Mule.

Спасибо, Anoop


person anoop ramachandran    schedule 14.05.2019    source источник


Ответы (1)


Вы можете использовать flatMap, как я показываю в этом примере, или сгладить результат, как в примере 2.

%dw 2.0
output application/csv
var categoryList = ["Business","Authorization"]
---
payload flatMap((payload01,indexOfPayload01)->
categoryList map((payload02,indexOfPayload02)->
    {
    "Name": payload01.Name,
    "Category":payload02,
    "Code":"Customer",
    "Percentage":null,
    "End Tag": "End"
    })
)

В этом примере показано, как использовать flattn

%dw 2.0
output application/csv
var categoryList = ["Business","Authorization"]
---
flatten(payload map((payload01,indexOfPayload01)->
categoryList map((payload02,indexOfPayload02)->
    {
    "Name": payload01.Name,
    "Category":payload02,
    "Code":"Customer",
    "Percentage":null,
    "End Tag": "End"
    })
))
person machaval    schedule 14.05.2019
comment
Спасибо мачавал. Flatten - вот и все, чего не хватало. - person anoop ramachandran; 14.05.2019