Logic App无法从邮件附件提取并解析JSON文件问题求助
解决Logic App从邮件附件解析JSON的问题
问题定位
报错提示无法计算模板语言表达式'body('GetAttachment')?['Attachments'][0]?['ContentBytes']',因为无法选择属性'0',核心原因是:
Attachments字段并非数组类型,或是当前邮件无附件,导致[0]索引访问失效- 你之前使用的表达式未正确定位附件内容字节,也未提前确认附件是否存在
正确操作步骤
1. 正确获取附件内容
确保Get Attachment动作返回的Attachments为数组格式(邮件附件通常以数组存储),单附件场景下,用索引[0]前需通过?做空值保护,避免字段不存在时直接报错。正确表达式如下:
base64ToString(body('GetAttachment')?['Attachments']?[0]?['ContentBytes'])
注意:邮件附件的ContentBytes是base64编码格式,必须通过base64ToString转成字符串,才能被Parse JSON动作识别
2. 配置Parse JSON动作
将上述表达式作为Parse JSON的输入内容,接着:
- 点击「使用示例负载生成架构」,粘贴附件中的JSON内容,自动生成匹配的JSON架构
- 或手动编写JSON架构,确保能正确识别
姓名字段
3. 提取姓名到变量
Parse JSON执行完成后,直接通过表达式引用解析后的姓名字段。例如JSON中姓名字段为name,则使用:
body('Parse_JSON')?['name']
将该表达式赋值给目标变量即可。
额外排查点
- 检查
Get Attachment动作配置,确认是获取当前触发邮件的附件,而非其他邮件 - 若存在多个附件,需添加
Apply to each动作遍历Attachments数组,再在循环内执行Parse JSON操作
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

