我有一个看起来像下面粘贴的JSON。我试图提取每个单独的记录并将其推送到队列中。我如何提取骡子中的每条记录?我一直在尝试使用集合拆分器和foreach循环,但我无法弄清楚如何让它工作。
{
"locations": {
"record": [
{
"id": 8817,
"loc": "NEW YORK CITY"
},
{
"id": 2873,
"loc": "UNITED STATES"
},
{
"id": 1501,
"loc": "NEW YORK STATE"
}
]
}
}
答案 0 :(得分:5)
要做到这一点:
record
列表现在在Mule XML配置中:
<json:json-to-object-transformer returnClass="java.util.Map" />
<expression-transformer expression="#[payload.locations.record]" />
<collection-splitter />
<!-- TODO: dispatch to queue -->
答案 1 :(得分:1)
试试这个,而不是Map put List。这对我来说很好。
<json:json-to-object-transformer returnClass="java.util.List" />
<expression-transformer expression="#[message.payload.locations.record]" />
<collection-splitter />
答案 2 :(得分:1)
我正在添加一个其中returnClass =“java.util.Map”工作的解决方案请看一下代码,在这个代码中,您可以使用http方法将相同的JSON放入正文中,同时从Fiddler或POST发送数据男人客户。
在这个流程中,我直接在Splitter中分配表达式而不是使用Expression Transformer。我正在使用Any Point Studio使其正常工作。
<flow name="mule-splitterFlow2" doc:name="mule-splitterFlow2">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" path="splitterjson"/>
<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<splitter expression="#[message.payload.locations.record]" doc:name="Splitter">
</splitter>
<logger level="INFO" doc:name="Logger" message="#[message.payload]"/>
</flow>