Azure Logic App数组类型变量输出为Null,如何获取预期输出?
解决Azure Logic App数组变量返回Null的问题
排查与修正方案
- 校验路径匹配性:先确认你的JSON负载结构和表达式中的层级完全对应。比如
allof是否为数组且存在索引0的元素、dimensions数组是否有索引0的项、value字段是否存在。只要层级中某一步无对应值,空值传播运算符?会直接返回Null,导致整个表达式结果为空。 - 分步测试表达式:
- 先单独输出
triggerBody()?['data']?['essentials']?['alertContext']?['condition'],确认能否拿到condition的完整内容。 - 逐步添加后续层级,比如
triggerBody()?['data']?['essentials']?['alertContext']?['condition']?['allof'],查看allof数组的实际元素数量和结构。 - 最后定位到
dimensions和value字段,确保每个层级的键名和数组索引都准确。
- 先单独输出
- 调整表达式逻辑:
- 如果目标是提取单个
value并包装成数组,先确认该路径确实存在有效值,再使用原表达式;若路径有误,修正键名或索引即可。 - 如果目标是获取
dimensions下所有value组成的数组,改用select函数批量提取:select(triggerBody()?['data']?['essentials']?['alertContext']?['condition']?['allof']?[0]?['dimensions'], item()?['value'])
- 如果目标是提取单个
- 检查键名大小写:JSON键名区分大小写,对照你提供的HTTP输出Body Schema,确保表达式中的键名(比如
allof、dimensions)和Schema定义完全一致。
示例验证
假设负载中allof[0].dimensions结构如下:
{
"dimensions": [
{"name": "ResourceGroup", "value": "my-rg"},
{"name": "ResourceName", "value": "my-appinsights"}
]
}
使用上述select函数会直接得到数组["my-rg", "my-appinsights"]。
内容的提问来源于stack exchange,提问作者Nitesh Gahir
相关产品推荐
相关产品推荐

