我正在使用 Anypoint 6.1 和 Mule 3.8.1,并且有一个 flowVar,它包含一个如下所示的 JSON 对象:
{
"stores": [
[
"store1"
],
[
"store2"
]
]
}
当我循环访问有效负载时,我想使用计数器值作为数组的位置,从与正在从有效负载处理的对象相关的 flowVars 中提取值。我不想将其移动到数组中,因为然后我需要添加一个额外的步骤来格式化用于数据库查询的值,例如添加 JSON 中已存在的“。
我该怎么做?
到目前为止,我已经得到了类似的东西,但它是错误的:
#[flowVars.storeData[json:stores[0]]]
谢谢
这是一个我认为模仿你正在做的事情的例子。在有效负载中,我设置了 json {"stores":[["store1"],["store2"]]}。在将其放入变量之前,我使用转换消息 (dataweave) 将索引存储作为字符串返回。 Payload.stores[1] 返回数组 ["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="{"stores":[["store1"],["store2"]]}" 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”