我将两个不同的有效载荷合并为一个有效载荷
问题描述:
我在这里有两种格式的有效载荷:
I have two different payloads here in format:
{"addressLine1":"POSBUS 007","addressLine3":"-1","postalCode":"1200"}
{"email":"xxxx@xxx.net"}.
如果我使用散点图收集,则会得到以下有效载荷:
If I use the scatter gather i get the following payload:
[{"addressLine1":"POSBUS 007","addressLine3":"-1","postalCode":"1200"}, {"email":"xxxx@xxx.net"}]
但是我想做的是将这两个有效负载合并为一个有效负载,例如:
But what I want to do is merge those two payloads into one payload like for instance:
{"addressLine1":"POSBUS 007","addressLine3":"-1","postalCode":"1200", "email":"xxxx@xxx.net"}
答
有几种解决此问题的好方法.这是使用groovy的一种:
There are several good ways to solve this problem. Here's one using groovy:
- 在分散收集的每个路由中,添加
<json:json-to-object-transformer returnClass="java.util.HashMap" />
将JSON有效负载转换为Map. - 在分散收集之后,添加以下内容以将地图列表转换为单个地图:
<set-payload value="#[groovy:payload.inject([:]) {result, part -> result.putAll(part); result}]" />
- In each route of the scatter-gather, add a
<json:json-to-object-transformer returnClass="java.util.HashMap" />
to transform the JSON payload to a Map. - After the scatter-gather, add the following to transform the list of maps into a single map:
<set-payload value="#[groovy:payload.inject([:]) {result, part -> result.putAll(part); result}]" />