如何在Azure Logic Apps中从数组创建字符串变量?
在Azure Logic App中拼接DimensionNames字符串变量的实现方案
方法一:使用表达式直接生成(推荐,高效无循环)
无需创建循环,直接通过Logic App内置表达式提取所有维度名称并拼接成目标格式:
在「Call Webhook」操作需要填写DimensionNames的位置,插入以下表达式:
join(select(body('当收到HTTP请求')?['dimensions'], item()?['name']), ', ')
表达式说明:
select(body('当收到HTTP请求')?['dimensions'], item()?['name']):遍历dimensions数组,提取每个元素的name字段,生成仅包含名称的新数组。join(..., ', '):将新数组用,(逗号加空格)连接成字符串,最终格式为name1, name2, name3。
方法二:通过循环拼接(适合需要额外处理的场景)
如果需要对维度名称做过滤、修改等额外操作,可使用循环拼接:
初始化变量:
添加「Initialize variable」操作,设置:- 变量名称:
DimensionNames - 类型:
String - 初始值:留空
- 变量名称:
遍历维度数组:
添加「For each」操作,选择动态内容中的body('当收到HTTP请求')?['dimensions']作为循环的目标数组。拼接字符串:
在「For each」内部添加「Append to string variable」操作,将以下表达式作为追加内容:if(equals(indexOf(body('当收到HTTP请求')?['dimensions'], items('For_each')), 0), items('For_each')?['name'], concat(', ', items('For_each')?['name']))该表达式会判断当前项是否为数组第一项:
- 第一项直接追加名称
- 后续项先追加
,再追加名称,保证格式统一
验证示例
假设触发请求的dimensions数组为:
[ {"name": "name1", "value": "v1"}, {"name": "name2", "value": "v2"}, {"name": "name3", "value": "v3"} ]
两种方法最终都会生成字符串:name1, name2, name3,可直接用于「Call Webhook」操作。
内容的提问来源于stack exchange,提问作者Kenny_I
相关产品推荐
相关产品推荐

