0

我正在使用 Mule 3.4,并且我有一个 Mule 流,它通过有效负载中的行项目,将每个行项目单独传递到 Web 服务,并为每个行项目返回 JSON 响应。

我想知道的是,Mule 中是否有办法将这些响应聚合到一个大型 JSON 对象中,并将其作为响应返回。

谢谢,

胡安

4

2 回答 2

2

虽然 Ryan 的每种方法都可以工作(我认为没有多少好的选择),但如果对 1000 个行项目中的行项目的第二个 Web 服务调用由于任何原因引发异常,您最好弄清楚您希望如何处理错误。 .

请参阅 Ryan Carter 的其他答案来解决这个问题:如何在 Mule foreach 范围内捕获异常但保持流程继续进行?

在我的用例中,我的有效负载是一个字符串列表,其中每个字符串都是代表一个订单的 json。我使用了一个自定义的 java 转换器(不允许在表达式转换器中使用 groovy)并且只是这样制作了我的 json。不是最好的解决方案,但似乎是害处较轻的。

Groovy 类似于(根本没有测试):

#[groovy: '{"orders":[' + payload.join(', ') + ']}'] 
于 2014-10-28T23:37:44.587 回答
1

对于每个项目,如果您将 json 转换为地图,例如使用<json:json-to-object-transformer returnClass="java.util.HashMap" />

这应该为您提供一组地图。然后在你的 foreach/loop 之外,将映射列表转换回 json,它应该给你一个 json 数组,使用: <json:object-to-json-transformer />

例如:

<foreach>
  <!--call service - returns {"id" : "1"} then {"id" : "2"} etc.-->
  <json:json-to-object-transformer returnClass="java.util.HashMap" />`
</foreach>

<json:object-to-json-transformer />

<!-- should output [{"id" : "1"}, {"id" : "2"}] -->
于 2014-10-23T19:08:40.783 回答