WSO2 JSON Array Обработка - PullRequest
       8

WSO2 JSON Array Обработка

0 голосов
/ 23 июня 2018

У меня есть массив json (см. Ниже), который зарегистрирован в моей последовательности wso2.

Полезная нагрузка: [{"id": "346", "sys": "8", "name": "A bldg"}, {"id": "345", "sys": "8", "name": "bbldg 3"} }]

Теперь я хочу перебрать массив. Как я могу это сделать? Я хочу войти имя для каждой строки на данный момент. Я пробовал несколько вариантов, но он не работает, любая помощь приветствуется!

Моя последовательность выглядит так:

<sequence name="a3" trace="enable" xmlns="http://ws.apache.org/ns/synapse">
    <property expression="json-eval($.payload)" name="array"
        scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
    <foreach expression="//array/*" sequence="" xmlns:ns="http://org.apache.synapse/xsd"/>

    <respond/>
</sequence>

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Не передавайте полезную нагрузку в свойство, а выполняйте прямую итерацию, как показано ниже,

<foreach expression="//payload">
  <sequence>
    <log>
      <property expression="//name" name="name" scope="default" type="STRING"/>
    </log>
  </sequence>
</foreach>
0 голосов
/ 25 июня 2018

Поскольку у вас есть вход JSON, поэтому, когда он входит в ESB, формат по умолчанию изменяется на xml, так как я вижу, что вход json равен [{"id":"346","sys":"8","name":"A bldg"},{"id":"345","sys":"8","name":"bbldg 3"} }], ESB добавит корневой элемент при преобразовании его в XML.

Теперь вы можете использовать XSLT для извлечения имени или использовать итерационный посредник, который вам когда-либо подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...