В выводе массива из dataweave появляется пустая запись - PullRequest
1 голос
/ 10 октября 2019

Я использую Anypoint Studio 7.3 и Mule 4.2.

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

Кто-нибудь может понять, почему возникает эта проблема?

Код Dataweave

%dw 2.0
output application/json
---
payload.records flatMap
    ((record, index) ->
        records.customers flatMap ((customer, index) ->
            customers.transactions flatMap ((transaction, index) ->
                transaction.prices filter (!isEmpty($)) map ((price, index) ->
                {
                    recordId: record.recordId,
                    customerId: customer.customerId,
                    transactionId: transaction.sessionId,
                    name: customer.name,
                    value: price.value
                })
            )
        )
    )

Ввод JSON

{
    "records": [
        {
            "recordId": "f4f80bc7",
            "customers": [
                {
                    "customerId": "a1f773b8",
                    "name": "J Smith",
                    "transactions": [
                        {
                            "transactionId": "f610bac1"
                            "prices": [
                                {
                                    "value": 580
                                },
                                {
                                    "value": 8403,
                                },
                                {
                                    "value": 8983
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

Вывод JSON со случайным нулем

[
  {
    "recordId": "f4f80bc7",
    "customerId": "a1f773b8",
    "transationId": "f610bac1",
    "name": "J Smith",
    "value": 580
  },
  {
    "recordId": "f4f80bc7",
    "customerId": "a1f773b8",
    "transationId": "f610bac1",
    "name": "J Smith",
    "value": 8403
  },
  {
    "recordId": "f4f80bc7",
    "customerId": "a1f773b8",
    "transationId": "f610bac1",
    "name": "J Smith",
    "value": 8983
  },
  null
]

Спасибо за любую помощь

1 Ответ

2 голосов
/ 10 октября 2019

Вы можете пропустить пустые элементы в вашем массиве с помощью свойства Writer skipNullOn.

output application/json skipNullOn="arrays".

Просто комментарий здесь: С вашим сценарием DW и вводом я не смог воспроизвестиваш вывод с нулевым элементом в Mule 4.2

...