首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在json数组上迭代中介器

在json数组上迭代中介器
EN

Stack Overflow用户
提问于 2014-08-01 18:23:36
回答 2查看 3.1K关注 0票数 3

我想要迭代json消息的结果数组。

代码语言:javascript
运行
复制
{ 
   "results":[ 
      { 
         "category":"mdl", 
         "subcategory":"ip", 
         "ip":"103.14.120.121", 
         "subtype":"IP-MDL", 
         "date":"1405074556", 
         "longitude":"75.3333", 
         "latitude":"19.8833", 
         "country":"India", 
         "city":"Aurangabad", 
         "organization":"Good Domain Registry Private Limited", 
         "isp":"Good Domain Registry Private Limited" 
      }, 
      { 
         "category":"mdl", 
         "subcategory":"ip", 
         "ip":"108.162.198.96", 
         "subtype":"IP-MDL", 
         "date":"1405074556", 
         "longitude":"-122.3933", 
         "latitude":"37.7697", 
         "country":"United States", 
         "city":"San Francisco", 
         "organization":"CloudFlare", 
         "isp":"CloudFlare" 
      } 
   ] 
} 

不幸的是,迭代中介器似乎不接受非xpath表达式,有人知道如何像在xml中一样迭代前面的消息json结果吗?我想使用ESB json原生支持,但似乎不能像使用XML那样分解json消息(我已经尝试迭代mediator、json有效负载工厂和脚本mediator,但都没有成功)

代码语言:javascript
运行
复制
            <iterate expression="json-eval(results)"> 
               <target> 
                  <sequence> 
                     <property name="messageType" value="application/json" scope="axis2"/> 
                     <payloadFactory media-type="json"> 
<format> 
{ 
"event":{ 
"providerName":"$1", 
"providerSource":"$2", 
"providerClassification":"$3", 
"providerVersion":"$4", 
"body":{ 
"results":{$5} 
} 
} 
} 
</format> 
<args> 
                                <arg value="bdigital"/> 
                                <arg evaluator="json" expression="$.results.category"/> 
<arg evaluator="json" expression="$.results.subcategory"/> 
                                <arg value="1.0"/> 
                                <arg evaluator="json" expression="$.results"/> 
</args> 
</payloadFactory> 
                     <call> 
                        <endpoint> 
                           <http method="post" 
                                 uri-template="http://BD-VM-PP-CIC01:8280/services/CICQueue"/> 
                        </endpoint> 
                     </call> 
                  </sequence> 
               </target> 
            </iterate>

提前谢谢你,

EN

Stack Overflow用户

发布于 2015-06-04 19:42:29

您可以执行以下操作?

代码语言:javascript
运行
复制
<property name="messageType" value="application/xml" scope="axis2" type="STRING"></property>
      <iterate xmlns:ns="http://org.apache.synapse/xsd" continueParent="true" expression="//jsonObject/results" id="MyIterator">
         <target>
            <sequence>
               <property name="cat" expression="json-eval($.results.category)" type="STRING"></property>

等。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25078109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档