如何在Azure Logic Apps中提取JSON响应中指定名称对应的ID值
在Azure Logic Apps中从REST API返回的JSON数组提取指定name对应的id值
假设你已经通过参数或变量(比如名为TargetListName的变量)存储了要匹配的name值,按以下步骤操作即可提取对应的id并赋值给变量:
步骤1:获取REST API响应
先通过HTTP动作调用目标REST API,确保能获取到示例中的JSON数组响应。
步骤2:筛选匹配name的对象
添加Filter Array动作:
- 输入:选择HTTP动作返回的JSON数组(表达式为
body('HTTP'),替换成你实际的HTTP动作名称) - 筛选条件:设置为
item()?['name']等于 你的目标参数/变量(比如variables('TargetListName')或parameters('TargetListName'))
这个动作会返回只包含匹配name的对象的数组。
步骤3:提取id值并赋值给变量
添加Set Variable动作:
- 变量名称:选择你要赋值的目标变量
- 值:输入表达式
first(body('Filter_Array'))?['id']first()用来取筛选后数组的第一个元素(适配唯一匹配的场景)?['id']用来安全访问对象的id属性,避免空值报错
额外处理:无匹配值的情况
如果担心没有匹配到对应name的对象导致报错,可以用coalesce函数设置默认值,比如:
coalesce(first(body('Filter_Array'))?['id'], -1)
这样当没有匹配结果时,变量会被赋值为-1(可替换为你需要的默认值)
示例响应参考
[ { "id": 1, "name": "xyz-List", "data": { "urls": [ "*.test1.com", "*.test2.com" ], "type": "exact" }, "modify_by": "admin@xyz.com", "modify_time": "2022-06-29T21:05:27.000Z", "modify_type": "Created", "pending": 0 }, { "id": 2, "name": "abc-List", "data": { "urls": [ "www.mytesting.com" ], "type": "exact" }, "modify_by": "admin@xyz.com", "modify_time": "2022-06-29T21:05:27.000Z", "modify_type": "Created", "pending": 0 }, { "id": 3, "name": "azure-list", "data": { "type": "exact", "urls": [ "www.xyz.com", "www.azure-test.com" ], "json_version": 2 }, "modify_by": "admin@xyz.com", "modify_time": "2022-09-26T01:25:20.000Z", "modify_type": "Edited", "pending": 0 } ]
内容的提问来源于stack exchange,提问作者csaif7
相关产品推荐
相关产品推荐

