【问题标题】:Iterate Mediator over json arrays在 json 数组上迭代 Mediator
【发布时间】:2014-09-24 12:46:04
【问题描述】:

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

{ 
   "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-native 支持,但似乎无法像使用 XML 那样分解 json 消息(我尝试过迭代调解器、json 有效负载工厂和脚本调解器但没有任何成功)

            <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>

提前致谢,

【问题讨论】:

    标签: json loops wso2 esb


    【解决方案1】:

    您可以执行以下操作吗?

    <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>
    

    等等

    【讨论】:

      【解决方案2】:

      WSO2 EI 中有一个新版本,您可以在其中使用 JSON 路径迭代 JSON。您可以执行以下操作。

               <iterate id="iterate-over-users" preservePayload="true" attachPath="json-eval($.results)" expression="json-eval($.results)">
                  <target>
                     <sequence>
                        <send>
                           <endpoint>
                              <http method="POST" uri-template="http://backend.com"/>
                           </endpoint>
                        </send>
                     </sequence>
                  </target>
               </iterate>
      

      有关详细信息,请参阅以下博客。 https://medium.com/@arunans23/iterate-over-json-payload-with-wso2-enterprise-integrator-8ccb9cdd2c70

      【讨论】:

        猜你喜欢
        • 2011-08-11
        • 2014-05-04
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 2016-02-25
        • 1970-01-01
        • 2018-03-23
        • 2016-07-28
        相关资源
        最近更新 更多