mule - Mule 4 中的 ForEach 聚合
问题描述
我想汇总 For Each 每次迭代的响应。在每次迭代中,我都会获取 Json 数据,并且我想将该 Json 数据聚合到 Json Array/List 中。请让我知道如何通过在 Transform 中使用数据编织或任何其他方式来做到这一点?
下面是我在 For Each 的每次迭代中获得的示例 Json 数据。
1st iteration:
{
"accountId": "12345",
"accountNumber": "999",
"accountTitle": "ABC"
}
2nd iteration:
{
"accountId": "98765",
"accountNumber": "888",
"accountTitle": "XYZ"
}
I want final aggregated output as below.
{
accountList: [
{
"accountId": "12345",
"accountNumber": "999",
"accountTitle": "ABC"
},
{
"accountId": "98765",
"accountNumber": "888",
"accountTitle": "XYZ"
}
]
}
解决方案
你可以关注类似的东西
<!-- Define blank arraylist for aggregation -->
<dw:transform-message doc:name="Transform Message">
<dw:set-variable variableName="result"><![CDATA[%dw 1.0
%output application/java
---
[]]]></dw:set-variable>
</dw:transform-message>
<foreach doc:name="For Each">
<!-- generate response using flow logic and add following step for updating result array -->
<dw:transform-message doc:name="Transform Message">
<dw:set-variable variableName="result"><![CDATA[%dw 1.0
%output application/java
---
flowVars.result ++ [payload]]]></dw:set-variable>
</dw:transform-message>
</foreach>
<!-- Transform aggregated result to any format. I used JSON -->
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
accountList : flowVars.result]]></dw:set-payload>
</dw:transform-message>
我使用了 Mule 3.x 语法。对于 mule 4,您可以使用attribute
而不是variable
用于存储记录。除了将 Dataweave 语言版本从 更改为 之外,Dataweave 语法将保持1.0
不变2.0
。
希望这可以帮助。
推荐阅读
- android - Android 将热图连接到当前位置
- go - 取消用户特定的 goroutine
- windows - 错误vue:vue:找不到命令
- angular - 使用数据绑定后,下拉菜单中的字体(下拉菜单的值)不可见
- android - 是否可以为应用程序中的所有 ImageView 设置样式背景
- ubuntu - coTurn 在 ubuntu 上运行,但在tricleICE 上没有中继候选
- android - 从 NDK 扩展 LLDB (Android Studio 3.1.3)
- java - Java:Eclipse:内存分析器:获取堆转储对话框显示没有要获取的 PID
- node.js - 大型(Node.js)单页项目是如何实现的?
- python - 使用熊猫按列值分组条形图