Скажем, у меня есть три поля
{
"Name": "Ben",
"City": "London",
"Country": "United Kingdom"
}
Теперь, когда какое-либо из этих полей пусто, я не хочу, чтобы оно было объединено в окончательный ответ.
Пример:
если все три поля заполнены, конечный результат: "Ben AND London AND United Kingdom"
,
если их всего два (скажем Город и Страна): "London AND United Kingdom"
,
если есть только один: "Ben"
Попробуйте сначала отфильтровать пустые значения из полезной нагрузки и использовать joinBy для конкатенации строк:
%dw 2.0
output application/json
var payload = { "Name": "Ben", "City": "London", "Country": "United Kingdom" }
---
(valuesOf(payload) filter !isBlank($)) joinBy " AND "
Вы можете использовать любой из способов, показанных ниже:
%dw 2.0
output application/json
---
payload pluck ((value, key, index) -> (value)) reduce ((item, accumulator) -> accumulator ++ " AND " ++ item)
%dw 2.0
output application/json
---
payload pluck ((value, key, index) -> (value)) joinBy " AND "
Попробуй это.
Вход1:
{
"Name": "Ben",
"City": "London",
"Country": "United Kingdom"
}
Сценарий переплетения данных
%dw 2.0
output application/json
var fields = [payload.Name, payload.City, payload.Country]
---
if (sizeOf(fields filter ($ != "")) > 1)
joinBy(fields filter ($ != ""), " AND ")
else fields filter ($ != "")[0]
Выход:
«Бен И Лондон И Соединенное Королевство»
Импорт не нужен