如何在Power Automate中从Compose输出动态传入Parse JSON的JSON Schema
解决Power Automate中Parse JSON动态传入Schema的问题
Power Automate的Parse JSON动作是设计时绑定Schema的,目的是生成静态的字段引用供后续流程使用,不支持运行时动态传入Schema。要实现你的通用化流程,可采用以下几种可行思路:
方案1:动态字段提取(无需Schema)
直接用表达式从JSON数据中提取所需字段,完全绕过Parse JSON的静态Schema限制:
- 步骤1:根据用户选择读取对应SharePoint数据文件,用
json(body('Get file content'))将文件内容转为JSON对象(假设读取文件的动作名为Get file content)。 - 步骤2:用表达式直接访问字段,例如:
- 获取第一个Volume的Name:
json(body('Get file content'))?['Volumes']?[0]?['Name'] - 遍历所有Volume的Cluster:在
Select动作中,From填json(body('Get file content'))?['Volumes'],Map填item()?['Cluster']
- 获取第一个Volume的Name:
- 注意:
?是安全访问运算符,能防止字段不存在时流程直接报错。
方案2:绑定对应Schema的分支流程
如果Criteria数量不多,可通过分支实现伪动态适配:
- 步骤1:用
Switch动作,以用户选择的Criteria为判断条件。 - 步骤2:每个分支下添加独立的
Parse JSON动作,手动填入对应Criteria的Schema(比如criteria1分支使用你提供的Schema)。 - 步骤3:后续流程可统一使用各分支中Parse JSON的输出(需确保各分支输出的字段结构在后续流程中兼容)。
方案3:用外部脚本/函数实现动态解析
如果需要严格的Schema验证+动态解析,可借助外部能力:
- Office Scripts:编写一个Script,接收JSON数据字符串和Schema字符串,完成验证和解析后返回结构化结果。在Power Automate中调用这个Script,传入读取到的数据文件内容和Schema文件内容。
示例Script逻辑:function main(workbook: ExcelScript.Workbook, jsonData: string, schema: string) { const data = JSON.parse(jsonData); const schemaObj = JSON.parse(schema); // 可添加Schema验证逻辑(比如引入ajv库实现校验) return data; } - Azure Functions:编写一个HTTP触发的函数,接收数据和Schema参数,完成解析后返回结果,Power Automate通过HTTP请求调用该函数。
补充:Schema验证的替代方式
如果需要验证数据是否符合对应Schema,可在Compose动作中用try()函数捕获转换错误:
try(json(body('Get file content')), '数据格式不符合Schema')
若返回错误信息,可触发异常通知流程。
内容的提问来源于stack exchange,提问作者Saikat Dasgupta
相关产品推荐
相关产品推荐

