Конфигурация WSO2 EI JSONBuilder - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть этот xml, который нужно было обработать и преобразовать в JSON:

<jsonObject>
    <number>1234</number>
    <emptyString/>
    <string>hello</string>
</jsonObject>

Когда он проходит через JsonStreamBuilder, например:

<property name="messageType" scope="axis2" type="STRING" value="application/json"/>

Я получаю JSON вот так:

{
  "number":1234,
  "emptyString": null,
  "string":"hello"
}

Поэтому мне интересно, есть ли способ настроить JsonStreamBuilder для обработки пустого тега не как пустого значения, а как пустой строки, кроме того, я хочу, чтобы числа также обрабатывались как строки.

Может быть, я могу изменить XML-файл по умолчанию в соответствии со своими потребностями?

Кстати, я использую WSO2 EI 6.1.1

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Поведение JsonFormatter по умолчанию - разрешать примитивные типы в выводе JSON.Это означает, что любой контент, который является действительным числом, будет представлен в сообщении JSON как число.

В качестве решения этой проблемы вы можете отключить преобразование в примитивный тип после добавления указанного ниже свойства в файл synapse.properties каталога EI_HOME / conf .

synapse.commons.json.output.autoPrimitive=false 

Однако это свойство является глобальным свойством, поэтому оно будет применяться ко всем сервисам (прокси-сервисам и API).Таким образом, это означает, что любая строка, которая является действительным числом, не будет преобразована в число.

В зависимости от вашей проблемы вам необходимо отключить преобразование строки в целое число.Вы можете решить эту проблему, добавив следующие свойства в файл EI_HOME / conf / synapse.properties .

synapse.commons.json.output.autoPrimitive=true

synapse.commons.json.output.disableAutoPrimitive.regex=^[1-9]*$

В этом случае автоматический примитив отключается только для чисел.

ПРИМЕЧАНИЕ : после включения автоматического примитива некоторые поля можно исключить из функции автоматического примитива на основе регулярного выражения, определенного в файле synapse.properties.

  • И пустоепометить как непустую проблему, вы можете решить, следуя вышеупомянутому сообщению в блоге.
0 голосов
/ 29 декабря 2018

Это похоже на ограничение в wso itlsef, документация утверждает, что это желаемое поведение.Чтобы решить эту проблему, попробуйте использовать скрипт-медиатор WSO2ESB: параметр свойства не принимает пустое значение или становится еще ниже (более сложным) https://medium.com/@lashan/class-mediator-to-handle-null-values-in-json-payload-wso2-ei-34a43246f0f

...