Logic Apps表达式报错:属性不存在致coalesce无法求值
解决Logic Apps中Coalesce表达式因属性不存在报错的问题
这个问题我之前也碰到过——Logic Apps里直接访问不存在的属性时,不会返回null,而是直接抛出属性不存在的错误,导致coalesce还没机会尝试后续的备选值就挂了。
给你两个实用的解决方案:
方案1:用contains先检查属性存在性
通过contains函数先确认属性是否存在,只有存在时才取值,否则返回null,这样coalesce就能正常工作了:
coalesce( if(contains(triggerBody(), 'data') and contains(triggerBody().data, 'job_id'), triggerBody().data.job_id, null), triggerBody().resource_id, 'error' )
这里先检查根对象里有没有data,再检查data里有没有job_id,两个条件都满足才取job_id的值,否则返回null,coalesce就会自动跳过这个空值,去取后面的resource_id或者error。
方案2:用getProperty函数(更简洁)
getProperty是专门处理这种场景的函数——如果目标属性不存在,它会返回null而不是报错。用它重构你的表达式会更简洁:
coalesce( getProperty(getProperty(triggerBody(), 'data'), 'job_id'), getProperty(triggerBody(), 'resource_id'), 'error' )
- 先通过
getProperty(triggerBody(), 'data')尝试获取data属性,不存在就返回null - 再用
getProperty从这个结果里取job_id,如果前面是null,结果还是null - 最后
coalesce会依次检查这几个值,返回第一个非空的,完全符合你的需求
如果resource_id也有可能不存在,第二个参数也用getProperty包裹就好,这样所有属性不存在的情况都能被优雅处理。
内容的提问来源于stack exchange,提问作者user1048175
相关产品推荐
相关产品推荐

