Logic Apps 提取JSON数组指定键值拼接为分隔字符串方法
报错原因
body('Parse_JSON_owners')?['value'] 是对象数组,Azure Logic Apps/Power Automate 的模板语法不支持直接从数组根节点批量选取子元素属性,数组仅支持通过整数索引访问单个元素,因此直接追加?['mail']会触发你看到的报错。
正确实现方案
你需要先把数组中每个对象的mail字段提取为纯字符串数组,再调用join做拼接,有两种常用实现方式:
方式1:可视化Select操作实现(易维护)
- 新增「Select」数据操作:
- 「起始位置」参数填
body('Parse_JSON_owners')?['value'] - 点击映射栏右侧的切换按钮,切到文本映射模式(不要用默认的键值对模式)
- 映射值填
item()?['mail']
该操作会输出一维字符串数组,格式为["joebloggs@domain.com", "johndoe@domain.com"]
- 「起始位置」参数填
- 拼接时直接引用Select输出即可,表达式为:
join(body('Select'), ';')
方式2:单表达式内联实现
不需要新增额外操作,直接在需要拼接结果的位置写入以下表达式,一步完成提取+拼接:
join(select(body('Parse_JSON_owners')?['value'], lambda item, item?['mail']), ';')
可选优化
如果数组中可能存在mail字段为null/空值的对象,可以先加一层过滤,避免拼接结果出现多余分号或空内容:
join( select( filter(body('Parse_JSON_owners')?['value'], lambda item, not(empty(item?['mail']))), lambda item, item?['mail'] ), ';' )
内容的提问来源于stack exchange,提问作者prinkpan
相关产品推荐
相关产品推荐

