#mule #dataweave #mule-component #mule4
#mule #сохранение данных #mule-компонент #mule4
Вопрос:
У меня есть запрос на массив, как показано ниже.В нем может быть несколько shipping
объектов, как показано ниже. В запросе 2-й объект, "shipping"
имеющий два Header
и двойку Details
.
Здесь 1-й заголовок необходимо объединить с 1-м деталями для создания отдельных Shipping
объектов, а 2-й Header
необходимо объединить со 2-м Details
для создания отдельных Shipping
объектов и наоборот, поскольку у него есть шансы иметь больше заголовков и деталей.
Примечание: Если header
присутствует, совпадение details
всегда будет присутствовать таким же образом.
Запрос и ожидаемый ответ приведены ниже. Среда выполнения Mule 4.2.2
Любая идея, как ее можно реорганизовать, любые мысли о решении будут высоко оценены. Спасибо.
Запрос:
[
{
"Shipping": {
"Header": {
"Identifier": "100",
"SerialNo": "61",
"ShippingDate": "10/08/1988",
"Address1": ""
},
"Details": {
"SerialNo": "61",
"LineNo": "1",
"Description": "Shipping Details"
}
}
},
{
"Shipping": {
"Header": {
"Identifier": "100",
"SerialNo": "62",
"ShippingDate": "21/08/2021",
"Address": "Test1Address"
},
"Header": {
"Identifier": "100",
"SerialNo": "62",
"ShippingDate": "22/05/1977",
"Address1": "Test2Address"
},
"Details": {
"SerialNo": "62",
"LineNo": "1",
"Description": "Test1"
},
"Details": {
"SerialNo": "62",
"LineNo": "1",
"Description": "Test2"
}
}
}]
Ожидаемый ответ
[
{
"Shipping": {
"Header": {
"Identifier": "100",
"SerialNo": "61",
"ShippingDate": "10/08/1988",
"Address1": ""
},
"Details": {
"SerialNo": "61",
"LineNo": "1",
"Description": "Shipping Details"
}
}
},
{
"Shipping": {
"Header": {
"Identifier": "100",
"SerialNo": "62",
"ShippingDate": "21/08/2021",
"Address": "Test1Address"
},
"Details": {
"SerialNo": "62",
"LineNo": "1",
"Description": "Test1"
}
}
},
{
"Shipping": {
"Header": {
"Identifier": "100",
"SerialNo": "62",
"ShippingDate": "22/05/1977",
"Address1": "Test2Address"
},
"Details": {
"SerialNo": "62",
"LineNo": "1",
"Description": "Test2"
}
}
}]
Надеюсь, мой вопрос прояснится. Дайте мне знать, если требуется больше разъяснений.
Ответ №1:
В этом скрипте я попытался удалить поле повторного сопоставления, повторно используя исходные объекты.
payload reduce ((shipping, acc=[]) ->
acc (
shipping.Shipping.*Details map ((detail, index) ->
{
Shipping: {
Header: shipping.Shipping.*Header[index],
Details: shipping.Shipping.*Details[index]
}
}
)
)
)
Вы можете сопоставить, используя *Details
или *Header
, который должен выдавать тот же результат
ОТРЕДАКТИРОВАНО: логика заголовка отсутствовала, и в доставке нет другого содержимого, кроме заголовка и деталей
Комментарии:
1. Потрясающе. Работает нормально, как и ожидалось. Спасибо за быстрый ответ