Power Automate Cloud:如何基于Value字段合并JSON对象并去重
Power Automate 基于指定字段(value)高效去重合并JSON数组
核心思路
Power Automate 的 union() 函数是对比整个对象是否完全一致来实现去重的,无法直接基于单个字段去重。要实现仅按value字段去重且保留完整条目,需先将数组转换为以value为唯一键的对象(利用对象键的唯一性自动去重),再提取对象的值得到最终数组,全程无需循环,效率和Select操作一致。
具体操作步骤
假设你的两个数据源ExistingRoutes和ImportedRoutes返回的是包含条目的数组(如果数组嵌套在value或items字段里,自行替换路径):
合并两个数组
添加一个「Compose」操作,输入公式:concat(body('ExistingRoutes'), body('ImportedRoutes'))如果数组在
value字段下,公式改为:concat(body('ExistingRoutes')?['value'], body('ImportedRoutes')?['value'])转换为以value为键的对象
添加一个「Select」操作:- 从:选择上一步Compose的输出
- Map:点击「切换到输入整个对象」,输入公式:
{ "@{item()?['value']}": @{item()} }
这一步会自动将相同
value的条目覆盖(保留最后一个出现的条目,若想保留第一个,调整合并数组的顺序即可)。提取去重后的完整条目
添加另一个「Compose」操作,输入公式:values(outputs('Select'))输出结果就是仅按
value字段去重后的完整条目数组。
为什么你之前的公式报错/不符合需求
- 直接
union(body('ExistingRoutes')?['value'], ...):仅合并了value字段的数组,丢失了其他字段信息,不符合保留完整条目的需求。 union(select(...), select(...)):Select仅提取了value值,得到的是纯value数组,同样丢失了完整条目。- 直接
union整个数组:只有当两个对象所有字段完全一致时才会去重,无法实现仅按value去重的目标。
内容的提问来源于stack exchange,提问作者fayfvu321
相关产品推荐
相关产品推荐

