Как передать JSON в Open ESB

Я создаю простое приложение OpenESB. Слева у меня есть входящая партнерская ссылка для отдыха, а справа я звоню по исходящей партнерской ссылке для остальных. Я пытаюсь передать json службе, но openESB автоматически анализирует его и преобразует в XML.

Итак, вопрос в том, как мне запретить open esb преобразовывать строку json в xml, поскольку служба не принимает ввод xml.


person wib    schedule 09.07.2015    source источник
comment
Можете ли вы сказать, какую входную строку Json вы отправляете? Также Content-Type и MediaType данных   -  person Hemal    schedule 15.07.2015
comment
{name:äbc}..это работает..но {name1:äbc,nam2:äbc} не работает.. Тип контента — application/json..является ли mediatype информацией заголовка?   -  person wib    schedule 16.07.2015


Ответы (4)


OpenESB может обрабатывать только XML.

Для consume-types=[ "application/json" ] входные данные JSON автоматически преобразуются в XML для дальнейшей обработки и при необходимости вызывают ссылки на внешние партнеры.

Для produce-types=[ "application/json" ] данные XML преобразуются в JSON с помощью OpenESB.

Чтобы добиться того же, ваш JSON должен быть в формате, который при преобразовании в XML создает действительный XML. Например, {"name":äbc"} выглядит как <name>abc</name> при преобразовании в XML.

Ввод JSON, например,

{
    "name1":äbc",
    "name2":äbc"
}

похоже

<name1>abc</name1>
<name2>abc</name2>

Теперь XML-элементы name1 и name2 не имеют корневого элемента, поэтому OpenESB не может его обработать.

Если вы вводите JSON как

{
     "someRootElement":{
         "name1":äbc",
         "name2":äbc"
      }
}

, преобразованный XML будет выглядеть так:

<someRootElement>
   <name1>abc</name1>
   <name2>abc</name2>
</someRootElement>

Это должно работать в вашем случае. :)

person Hemal    schedule 21.07.2015
comment
почему для этого требуется rootelement? - person wib; 21.07.2015
comment
XML требуется, чтобы корневой элемент включал два или более подэлементов. Поэтому соответствующий Json должен содержать корневой элемент. - person Hemal; 21.07.2015

Кажется, что ваше открытое приложение ESB настроено на формат xml, и, следовательно, если вы вызываете службу json, она преобразуется в xml. Эта ссылка может помочь вам внедрить JSON в ESB https://docs.wso2.com/display/ESB403/ESB+and+JSON.

person Sonali    schedule 13.07.2015

Если у вас есть JSON в строке, вы можете передать его, установив его значение в следующее свойство вашей переменной.

        <copy>
             <from>'{"name" : "abc", "age" : "23"}'</from>
            <to variable="RestOutboundIn" part = "part1"/>
        </copy>
        <copy>
             <from variable="RestOutboundIn" part = "part1"/>
            <to variable="RestOutboundIn" sxnmp:nmProperty="org.glassfish.openesb.rest.entity"/>
        </copy>

ПРИМЕЧАНИЕ. Это свойство недоступно в редакторе OpenESB bpel. вам нужно будет установить его значение через источник XML.

person Zunnoon    schedule 14.02.2018

Вы можете создать свой собственный компонент, который будет самым простым способом обработки json в xml, xml в json. дайте мне знать, если вам нужно больше подробностей об этом.

person Siddharth Bhandari    schedule 18.12.2018