JMeter如何提取与验证JSON响应数组内的单个数据元素
JMeter提取JSON响应data数组单个元素方法
接口响应示例:
{"success":true,"data":["BUSHIDO-GENERAL","QA","QA3","QA5"]}
你要提取数组内单个字符串值、去掉数组外层的需求可以通过JMeter自带的JSON Extractor完成,不需要额外安装插件,操作步骤如下:
方法1:使用JSON Extractor(推荐)
- 给目标HTTP请求添加后置处理器:右键请求节点 ->
添加->后置处理器->JSON Extractor - 按需求填写配置参数:
- 引用名称:自定义变量名,比如
data_item,后续用${data_item}调用提取结果 - JSON Path表达式:
- 取固定下标元素:比如取第一个值
BUSHIDO-GENERAL填$.data[0],取第二个值QA填$.data[1],以此类推 - 批量提取所有元素:填
$.data[*],匹配数字填-1,后续可通过${data_item_1}、${data_item_2}分别调用每个位置的元素
- 取固定下标元素:比如取第一个值
- 匹配数字:取单个固定值填
0,提取所有值填-1 - 默认值:可填
NOT_FOUND,方便提取失败时排查问题
- 引用名称:自定义变量名,比如
- 验证结果:添加
调试后置处理器后运行测试,在结果树的调试采样器中可以看到提取到的是纯字符串格式的单个值,无数组外层包裹。
如果需要做值验证,直接用响应断言匹配对应变量即可,比如验证第二个元素为QA,直接判断${data_item_1}的内容等于QA即可。
方法2:使用JSR223后置处理器(适合复杂逻辑场景)
如果需要对提取的元素做额外逻辑处理,可以用Groovy脚本实现,添加JSR223后置处理器后填入以下代码:
import groovy.json.JsonSlurper // 解析接口响应 def jsonResp = new JsonSlurper().parseText(prev.getResponseDataAsString()) // 提取data数组第一个元素,下标可按需修改 def targetItem = jsonResp.data[0] // 将结果存入JMeter变量 vars.put("target_data_item", targetItem)
内容的提问来源于stack exchange,提问作者Ralph
相关产品推荐
相关产品推荐

