Logic App调用API遇ActionFailed错误,如何处理空options数组?
问题根源分析
你遇到的执行失败,核心原因是if语句返回值的类型不匹配:
- 当
options不为空时,你返回的是items('For_each')?['options'],也就是选项数组本身(比如示例里的[{id:10017,...}, ...]) - 当
options为空时,你返回的是一个包含options对象的数组([{"options": [ {...} ]}]),后续依赖该输出的动作期望接收数组类型,但实际收到的是嵌套对象数组,类型不匹配导致执行失败。
最优解决方案
修正if语句的true分支,让它返回和正常情况一致的选项数组类型,直接返回包含N/A选项的数组即可,不需要额外嵌套options键。
修正后的表达式
if( empty(items('For_each')?['options']), json('[ { "id": 1, "title": { "English": "N/A" }, "value": "N/A", "properties": null, "image": { "sLink": "N/A" } } ]'), items('For_each')?['options'] )
额外优化:兼容options属性不存在的情况
如果存在items('For_each')里没有options属性的场景,可以用coalesce先兜底为空数组,再判断空值,避免属性不存在引发的异常:
if( empty(coalesce(items('For_each')?['options'], [])), json('[ { "id": 1, "title": { "English": "N/A" }, "value": "N/A", "properties": null, "image": { "sLink": "N/A" } } ]'), coalesce(items('For_each')?['options'], []) )
验证逻辑
修正后,无论options是空数组还是正常数组,返回的都是相同类型的选项数组,后续依赖该输出的动作能正确识别数据结构,不会再触发类型不匹配导致的执行失败,同时满足空数组时加载N/A选项的需求。
内容的提问来源于stack exchange,提问作者user19307825
相关产品推荐
相关产品推荐

