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数组处理的主要内容,如果未能解决你的问题,请参考以下文章
WSO2:将CSV消息转换为json wso2 esb。在prolog中出现意外字符'“'(代码34)失败;预期'
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”