Проблема преобразования json в wso2 API Manager
Мы пытаемся использовать wso2 api manager для доступа к некоторым нашим службам RESTful. Остальные службы ожидают полезной нагрузки JSON. Когда json-запрос отправляется в api manager, он преобразует json-запрос в xml и снова пересылает его в конечную точку, затем преобразует в json-обратно. Полученный json не соответствует точно исходному запросу в одном из наших случаев. Например, если запрос содержит массив элементов и если в массив передан только один элемент, тогда, когда api manager направляет запрос конечной точке, символы массива ([,]) удаляются. например. наш первоначальный запрос был
{
"entities": [
{
"name":"KK71CP20000523A1",
"descr":"VaS",
"mnf":"BCT",
"mdlyr":"2012"
}
]
}
запрос, отправленный менеджером API, был
{
"entities":
{
"name":"KK71CP20000523A1",
"descr":"VaS",
"mnf":"BCT",
"mdlyr":"2012"
}
}
Обертка массива удалена под элементом сущностей. Когда количество элементов больше одного, символы массива сохраняются.
Мы сталкивались с той же проблемой в ESB и ранее. Но мы обошли эту проблему, расширив JSONMessageFormatter по умолчанию и используя метод seriliazeAsArray, доступный в библиотеке jettison. Но мы не хотим делать эту настройку в API Manager. Есть ли лучший способ исправить эту проблему? Любой патч, доступный от wso2, чтобы исправить это?
1 ответ
Все углеродные продукты поставляются с одинаковыми компоновщиками и форматерами сообщений, для вашего случая вы можете проверить с помощью JSONStreambuilder и форматера. Посмотрите на эту ссылку,