MuleSoft DataWeave 2.0:按type为AA的对象拆分Payload为多数组
MuleSoft DataWeave 2.0:按{"type": "AA"}拆分数组的实现方案
以下是实现需求的DataWeave 2.0代码:
%dw 2.0 output application/json --- payload reduce ((item, accumulator = {currentGroup: [], result: []}) -> if (item.type == "AA") { currentGroup: [item], result: accumulator.result ++ (if (sizeOf(accumulator.currentGroup) > 0) [accumulator.currentGroup] else []) } else { currentGroup: accumulator.currentGroup << item, result: accumulator.result } ).result ++ (if (sizeOf($.currentGroup) > 0) [$.currentGroup] else [])
代码逻辑说明
- 借助
reduce函数遍历输入数组,通过累加器维护两个状态:currentGroup:临时存储正在构建的子数组result:存储已经完成拆分的所有子数组
- 遇到
type为"AA"的元素时:- 将之前已构建完成的
currentGroup(非空时)加入result - 以当前
AA元素为起点,新建一个currentGroup
- 将之前已构建完成的
- 非
AA元素直接追加到当前的currentGroup中 - 遍历结束后,把最后一个未存入
result的currentGroup(非空时)补充到最终结果里
将你提供的输入Payload代入这段代码,即可得到期望的嵌套数组输出。
内容的提问来源于stack exchange,提问作者Mark Okane
相关产品推荐
相关产品推荐

