Jmeter使用JSON Path提取响应中name含test的所有alertId求助
目标
提取给定JSON接口响应中,所有properties下name参数包含test的条目对应的alkey.alertId值。
原始接口响应
[ { "duplicateCount": 0, "fqdn": "qa-ubuntu14-4", "appName": "TEST_APD_UB14", "stateString": "OPEN", "category": "FILESCAN", "alkey": { "agentId": "8470ea64-a710-3e46-ba6b-ccd37ebc4074", "role": "AD SERVER", "alertId": "0258a7ca-bc72-3a53-aa98-3098c87411ba", "id": "6695a7fa-ab9f-43fa-871b-620cd1eeb75054af7770-604b-11e9-b486-8d59ab9344597cea0ea2-d897-3696-852d-5f3cb36f270e8470ea64-a710-3e46-ba6b-ccd37ebc4074/var/log/test321.txttest321.txtA", "applicationContextId": "7cea0ea2-d897-3696-852d-5f3cb36f270e" }, "properties": { "name": "test321.txt", "acl": "" } }, { "duplicateCount": 0, "fqdn": "qa-ubuntu14-4", "appName": "TEST_APD_UB18", "stateString": "OPEN", "category": "FILESCAN", "alkey": { "agentId": "8470ea64-a710-3e46-ba6b-ccd37ebc4074", "role": "AD SERVER", "alertId": "0258a7ca-bc72-3a53-aa98-3098c8741CDA", "id": "6695a7fa-ab9f-43fa-871b-620cd1eeb75054af7770-604b-11e9-b486-8d59ab9344597cea0ea2-d897-3696-852d-5f3cb36f270e8470ea64-a710-3e46-ba6b-ccd37ebc4074/var/log/test321.txttest321.txtA", "applicationContextId": "7cea0ea2-d897-3696-852d-5f3cb36f270e" }, "properties": { "name": "test555.txt", "acl": "" } } ]
实现方法
Python 实现示例
import json # 可直接替换为接口返回的响应字符串 response_data = json.loads('''上述JSON内容''') target_alert_ids = [] for item in response_data: if 'test' in item.get('properties', {}).get('name', ''): target_alert_ids.append(item['alkey']['alertId']) print(target_alert_ids)
命令行jq工具实现
Linux/macOS环境下可直接用jq工具一行完成提取:jq '.[] | select(.properties.name | contains("test")) | .alkey.alertId' response.json
注:需提前将接口响应内容保存为response.json文件。
提取结果
符合条件的alertId如下:
0258a7ca-bc72-3a53-aa98-3098c87411ba0258a7ca-bc72-3a53-aa98-3098c8741CDA
内容的提问来源于stack exchange,提问作者Ralph
相关产品推荐
相关产品推荐

