WSO2 JSON数组处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSO2 JSON数组处理相关的知识,希望对你有一定的参考价值。

我有一个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>
答案

因为你有一个JSON输入所以当它进入ESB时,格式默认改为xml,所以当我看到json输入是[{"id":"346","sys":"8","name":"A bldg"},{"id":"345","sys":"8","name":"bbldg 3"} }]时,ESB会在将它转换为XML时添加一个根元素。

现在您可以使用XSLT来获取名称,或者您可以使用最适合您的迭代介体。

另一答案

不要将有效负载带到属性而是直接迭代如下,

<foreach expression="//payload">
  <sequence>
    <log>
      <property expression="//name" name="name" scope="default" type="STRING"/>
    </log>
  </sequence>
</foreach>

以上是关于WSO2 JSON数组处理的主要内容,如果未能解决你的问题,请参考以下文章