如何使用DataWeave 2.0基于公共值合并JSON对象
DataWeave 合并同公共键值对象方案
需求场景
将JSON数组中拥有相同id键值的多个对象合并为单个对象,保留所有唯一键值对。
实现逻辑
- 第一步:使用
groupBy方法按公共字段id对输入数组分组,相同id的对象会被聚合到同一个数组中 - 第二步:用
pluck取出所有分组的对象数组 - 第三步:对每个分组的对象数组执行
reduce操作,将数组合并为单个对象
代码示例
%dw 2.0 output application/json --- payload groupBy $.id pluck ((sameIdItems) -> sameIdItems reduce ((item, mergedObj = {}) -> mergedObj ++ item))
效果说明
输入你提供的示例JSON后,运行上述代码即可得到你期望的输出结果:
[ { "id": "123", "phoneNumber": "123456789", "mobileNumber": "987654321", "email": "abc@abc.com", "user": "user1" }, { "id": "234", "custID": "123451234" } ]
提示:如果相同id的多个对象存在重复键,上述代码默认保留数组中后出现的对象的键值。如果需要优先保留先出现的对象的键值,将
mergedObj ++ item修改为item ++ mergedObj即可。
内容的提问来源于stack exchange,提问作者user7194270
相关产品推荐
相关产品推荐

