Как я могу зациклиться на полезной нагрузке JSON, полученной прокси-службы WSO2 ESB - PullRequest
0 голосов
/ 20 мая 2018

Я создаю прокси-сервис с использованием wso2 esb.Он отправляет запрос REST в API Google Книг и получает JSON.В этом Json есть динамический массив, который я должен анализировать в XML.Кажется, я не могу понять, как мне это сделать.

получил полезную нагрузку json

"items": [
  {
   "volumeInfo": {
    "title": "Web Services",
    "authors": [
     "Gustavo Alonso",
     "Fabio Casati",
     "Harumi Kuno",
     "Vijay Machiraju"
    ],
    "publisher": "Springer Science & Business Media",
    "publishedDate": "2003-09-04"
   ]
  }

Если вы посмотрите на вышеупомянутый полученный Json, то это что-то вроде этого items [0].авторы [i]

здесь авторы [i] очень динамичны, поскольку разные книги имеют разное количество авторов.

Как я могу преобразовать эту полезную нагрузку в XML и затем отправить в виде XML клиенту

<items>
    <titie></title>
    <authors>
        <author></author>
        <author></author>
        <author></author>
        .
        .
        .
    </authors>
</items>

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

При преобразовании из JSON в XML я почти всегда использую этот способ.

Сначала установите для messageType значение xml, вы также можете установить ContentType, но я не уверен на 100%, требуется ли это

<property name="messageType" scope="axis2" value="application/xml"/>
<property name="ContentType" scope="axis2" value="application/xml"/>

Затем используйте фабрику полезной нагрузки с корневым элементом, который в ней установлен, установите тип носителя на XML

<payloadFactory media-type="xml">
    <format>
        <SomeRequest xmlns="yourXMLNamespace">
            $1
        </SomeRequest>
    </format>
    <args>
        <arg evaluator="json" expression="."/>
    </args>
</payloadFactory>

Теперь у вас будет что-то похожее на это.

<SomeRequest>
    <items>
        <volumeInfo></volumeInfo>
        <title>Web Services</title>
        <authors>Gustavo Alonso</authors>
        <authors>Fabio Casati</authors>
        <authors>Harumi Kuno</authors>
        <authors>Vijay Machiraju</authors>
        <publisher>Springer Science & Business Media</publisher>
        <publishedDate>2003-09-04</publishedDate>
    </items>
    <items>
        ...
    </items>
</SomeRequest>

Посмотрите, какон развернул массив JSON, создал несколько элементов, используя имя массива.Чтобы перейти отсюда к формату ответа, вам нужен самый простой способ сделать это - использовать преобразование xslt.

<xslt key="{name of your xslt transform file}"/>

Затем вы можете ответить клиенту.

Это может бытьСтоит проверить страницу поддержки JSON в документации по wso2.Он описывает, как JSON преобразуется в XML и из XML https://docs.wso2.com/display/EI620/JSON+Support

0 голосов

В последующем вы можете использовать посредник полезной нагрузки для создания XML из JSON.

https://docs.wso2.com/display/ESB500/PayloadFactory+Mediator

...