Сообщение преобразования Mule:
%dw 1.0
%function removeEmptyInArray(arr) arr map (
(removeEmptyInArray($) when $ is :array
otherwise (removeEmptyInObject($) when $ is :object
otherwise $ when ($ != null and (sizeOf $) > 0) otherwise null))
) when arr != []
otherwise null
%function removeEmptyInObject(obj) obj mapObject (
'$$': (removeEmptyInArray($) when $ is :array
otherwise (removeEmptyInObject($) when $ is :object
otherwise $ when ($ != null and (sizeOf $) > 0) otherwise null))
)
%output application/json skipNullOn="everywhere" , encoding='UTF-8'
%namespace ns0 http://xxxxx
%namespace ns1 http://xxxxx
%function getKey(key) (capitalize key) replace /\s/ with '' replace /Tns:/ with '' replace /tns:/ with ''
%function convert(obj) obj mapObject {
(getKey($$)) : convert($) when ($ is :object) otherwise $
}
---
{
"Header": {
"H1": {
"ID": sessionVars.ID ,
"UID": sessionVars.UID
}
},
"Body": removeEmptyInObject(convert(payload))
}
Ответы:
Первый ответ:
"Details": [{
"A": {
"A1": {
"A11": ""
},
"A2": {
}
"A3": ""
}
},
{
"B": {
"B1": {
"B11": ""
},
"B2": ""
}
}]
Второй ответ:
"Details": {
"A": {
"A1": {
"A11": ""
},
"A2": ""
}
}
Дваответ приходит для разных людей, поэтому ответ может основываться на идентификаторе.
Но мне нужно, чтобы каждый раз ответ приходил как объект, не похожий на Array [], и я также не могу жестко закодировать всю полезную нагрузку как полезную нагрузкуможет быть изменено в соответствии с запросом.
Ожидаемый ответ для первого типа запроса:
"Подробности": "A": {"A1": {"A11": ""},"A2": {
}
"A3": ""
}
},
{
"B": {
"B1": {
"B11": ""
},
"B2": ""
}
}