В ОС нет ничего плохого - все проблемы с данными / полезной нагрузкой и сценарием Dataweave. Во-первых, функция map предназначена для Array, но в сообщении об ошибке отображается String with Object. Исходя из вопроса, скрипт должен рассчитывать на работу с массивом или строкой и должен адаптироваться к нему.
Вот пример, как это сделать https://simpleflatservice.com/mule4/ChangeStringToJsonOnTheFly.html
Вот пример, как возможно. Поиграйте с ним и измените ввод, чтобы увидеть, как он ведет себя с разными полезными нагрузками
%dw 2.0
var xAsObject=[{City:'AlbanyObject',State:'NY'},{City:'Seattle',State:'WA'}]
var xAsString='[{"City":"AlbanyString","State":"NY"},{"City":"Seattle","State":"WA"}]'
output application/json
var addr = xAsString
//var addr = xAsObject
---
{
Addresses: if (addr is Array)
[addr] map ( address, index ) -> {
Suburb: address.City
}
else if (addr is String )
( read ( ( addr default '' ), 'application/json' ) ) map ( address, index ) -> {
Suburb: address.City
}
else {Suburb: 'Unknown'}
}
Возможные выходы (для строки)
{
"Addresses": [
{
"Suburb": "AlbanyString"
},
{
"Suburb": "Seattle"
}
]
}
и для массива
{
"Addresses": [
{
"Suburb": [
"AlbanyObject",
"Seattle"
]
}
]
}