从Mule flowVars中的JSON数组中获取字段值

时间:2017-01-14 18:59:16

标签: json mule jsonpath anypoint-studio mel

我正在使用Anypoint 6.1和Mule 3.8.1并且有一个包含JSON对象的flowVar,如下所示:

{
  "stores": [
    [
      "store1"
    ],
    [
      "store2"
    ]
   ]
}

当我遍历有效负载时,我想使用计数器值作为数组的位置从有效负载中的与正在处理的对象相关的flowVars中提取值。我不想将其移动到数组中,因为我需要添加额外的步骤来格式化用于数据库查询的值,例如添加"它们已经存在于JSON中。

我该怎么做?

到目前为止,我有类似的东西,但这是错误的:

#[flowVars.storeData[json:stores[0]]]

由于

1 个答案:

答案 0 :(得分:0)

这是一个我认为模仿你正在做的事情的例子。在有效载荷中,我设置了json {“stores”:[[“store1”],[“store2”]]}。在将它放入变量之前,我使用转换消息(dataweave)将索引存储作为字符串返回。 payload.stores [1]返回array [“store2”],joinBy“”删除数组括号,留下“store2”。

     <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
     <flow name="myprojectFlow">
       <http:listener config-ref="HTTP_Listener_Configuration" path="/stores" allowedMethods="GET" doc:name="HTTP"/>
       <set-payload value="{&quot;stores&quot;:[[&quot;store1&quot;],[&quot;store2&quot;]]}" doc:name="Set Payload"/>
       <dw:transform-message metadata:id="adf13229-f050-43dd-bffb-ca2319a3723b" doc:name="Transform Message">
          <dw:input-payload mimeType="application/json"/>
          <dw:input-variable mimeType="application/json" variableName="mystores"/>
          <dw:set-payload><![CDATA[%dw 1.0
          %output application/json
           ---
           payload.stores[1] joinBy ""
          ]]></dw:set-payload>
       </dw:transform-message>
       <set-variable variableName="mystore" value="#[payload]" mimeType="application/json" doc:name="Variable"/>
       <logger message="#[payload]" level="INFO" doc:name="Logger"/>
     </flow>

记录器返回:

INFO 2017-01-17 15:31:24,242 [[myproject] .HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor:“store2”