Azure Logic App实现JSON数组按Id动态分组(无需Azure Function)
Azure Logic App 实现JSON数组按Id动态分组(无需Azure Function)
需求说明
将输入的JSON数组按Id字段分组,转换为指定结构,全程不依赖Azure Function:
输入JSON:
[ { "Id": "1", "name": "xxx", "age": "20" }, { "Id": "1", "name": "yyy", "age": "52" }, { "Id": "5", "name": "zzz", "age": "59" } ]
目标JSON:
[ { "1": [ { "Id": "1", "name": "xxx", "age": "20" }, { "Id": "1", "name": "yyy", "age": "52" } ], "5": [ { "Id": "5", "name": "zzz", "age": "59" } ] } ]
实现步骤
步骤1:初始化分组结果变量
添加「Initialize variable」动作:- 变量名:
groupedResult - 类型:
Object - 初始值:
{}(空对象)
- 变量名:
步骤2:遍历原始数组
添加「Apply to each」动作,选择原始JSON数组作为循环的输入对象。步骤3:循环内实现动态分组
在「Apply to each」内部添加「Condition」动作,判断当前元素的Id是否已存在于groupedResult中:判断表达式:
contains(variables('groupedResult'), items('Apply_to_each')?['Id'])分支1:Id不存在(False分支)
添加「Set variable」动作,更新groupedResult:- 表达式:
作用:为当前Id创建新的键值对,值是包含当前元素的数组。union(variables('groupedResult'), createObject(items('Apply_to_each')?['Id'], createArray(items('Apply_to_each'))))
- 表达式:
分支2:Id已存在(True分支)
- 添加「Compose」动作(命名为
Get_existing_array),获取当前Id对应的已有数组:- 表达式:
variables('groupedResult')[items('Apply_to_each')?['Id']]
- 表达式:
- 添加「Compose」动作(命名为
Append_current_item),将当前元素追加到已有数组:- 表达式:
union(outputs('Get_existing_array'), createArray(items('Apply_to_each')))
- 表达式:
- 添加「Set variable」动作,更新
groupedResult:- 表达式:
union(variables('groupedResult'), createObject(items('Apply_to_each')?['Id'], outputs('Append_current_item')))
- 表达式:
- 添加「Compose」动作(命名为
步骤4:包装为目标结构
循环结束后,添加「Compose」动作,将分组结果包装为数组:- 表达式:
此动作的输出即为目标JSON结构。createArray(variables('groupedResult'))
- 表达式:
内容的提问来源于stack exchange,提问作者Deepak Shaw
相关产品推荐
相关产品推荐

