JMeter中如何提取JSON响应内所有accountId列表?
在JMeter中提取JSON响应里的所有accountId列表
嘿,要从你给出的JSON响应里提取所有accountId的列表,用JMeter自带的JSON Extractor就能轻松搞定,这是处理JSON响应提取最便捷的方式,具体步骤如下:
第一步:添加JSON Extractor元件
右键点击你的HTTP请求元件 → 选择「后置处理器」→ 「JSON Extractor」,把它挂在HTTP请求的子节点下,这样它就能自动捕获该请求的响应数据。第二步:配置JSON Extractor的关键参数
在JSON Extractor的配置界面里,填写以下内容:- 引用名称:输入
accountIds(这个名字可以自定义,后续会用它来调用提取到的变量) - JSON Path表达式:填
$.results[*].accountId(或者更通用的$..accountId,前者精准定位到results数组下的所有accountId,后者递归查找整个JSON里的所有accountId字段,对你的场景来说两者都能用) - 匹配数字:输入
-1,这个值表示提取所有匹配到的accountId,而不是只取第一个 - 其余参数保持默认即可
- 引用名称:输入
第三步:验证提取结果
你可以添加一个「Debug Sampler」到测试计划里,运行测试后查看「结果树」中的Debug Sampler输出:- 你会看到类似
accountIds_1=220、accountIds_2=1这样的变量,每个序号对应一个提取到的accountId accountIds_matchNr变量会显示总共提取到了多少个accountId
- 你会看到类似
如果需要把这些分散的accountId拼接成一个逗号分隔的字符串(比如220,1,...),可以用JSR223元件配合Groovy脚本实现:
添加一个JSR223后置处理器,写入以下脚本:
def totalIds = vars.get("accountIds_matchNr") as Integer def idList = [] for (int i = 1; i <= totalIds; i++) { idList.add(vars.get("accountIds_" + i)) } vars.put("accountIdList", idList.join(","))
之后你就可以通过${accountIdList}来调用这个拼接好的列表了。
内容的提问来源于stack exchange,提问作者Ghost
相关产品推荐
相关产品推荐

