Вы можете использовать метод pluck для подсчета количества полей, скажем n
, а затем итерации для n/3
раз и динамического формирования ключей для получения данных из ввода.Следующий код работал для данного ввода
Код
%dw 1.0
%output application/json
%var data = payload[0]
%var dataSet = (sizeOf (data pluck $$ )) / 3
%var startIndex = 1
---
[trackingInfo : [ startIndex[0] .. dataSet] map {
"trackingNbr": data[("trackingNumber_" ++ $)],
"shipMethod":data[("shipMethod_" ++ $)],
"shipDate": data[("shipDate_" ++ $)]
}]
Вход-
[
{
"shipDate_1": "2010-01-11T07:00:00Z",
"shipDate_2": "2010-02-11T07:00:00Z",
"shipMethod_1": "UPS1 Ground",
"shipMethod_2": "UPS2 Ground",
"trackingNumber_1": "1",
"trackingNumber_2": "2"
}
]
Выход-
[
{
"trackingInfo": [
{
"trackingNbr": "1",
"shipMethod": "UPS1 Ground",
"shipDate": "2010-01-11T07:00:00Z"
},
{
"trackingNbr": "2",
"shipMethod": "UPS2 Ground",
"shipDate": "2010-02-11T07:00:00Z"
}
]
}
]
Другой способ основан на подсчетеtrackingNumber
полей, присутствующих на входе
%dw 1.0
%output application/json
%var data = payload[0]
%var dataSet = sizeOf ((data pluck $$ ) filter ($ contains "trackingNumber"))
%var startIndex = 1
---
[trackingInfo : [startIndex[0] .. dataSet] map {
"trackingNbr": data[("trackingNumber_" ++ $)],
"shipMethod":data[("shipMethod_" ++ $)],
"shipDate": data[("shipDate_" ++ $)]
}]
HTH