如何让JMeter的JSON Extractor仅在满足条件时执行提取操作?
在JMeter中条件触发JSON Extractor的方法
方法一:用If Controller控制执行时机
- 先添加一个JSON Extractor,用来提取
totalRecords的值:- 变量名:
total_records - JSON Path表达式:
$.totalRecords - 匹配数字:
0 - 默认值:
0
- 变量名:
- 添加If Controller,设置条件为:
${__jexl3(${total_records} != 0,)} - 把需要提取ticketId的JSON Extractor拖到这个If Controller下面。这样只有当
totalRecords不等于0时,提取操作才会执行,避免因数据不存在导致采样器异常。
方法二:用JSR223 PostProcessor实现条件提取
如果需要更灵活的逻辑,推荐用Groovy脚本处理:
- 添加JSR223 PostProcessor,选择Groovy语言,写入以下脚本(根据你的JSON结构调整路径):
import groovy.json.JsonSlurper def response = prev.getResponseDataAsString() def json = new JsonSlurper().parseText(response) // 判断totalRecords不为0时才提取ticketId if (json.totalRecords != 0) { def ticketId = json.ticketId // 替换成实际的JSON路径,比如$.data.ticketId vars.put("ticket_id", ticketId.toString()) }
- 脚本会先检查
totalRecords的值,符合条件才提取并存储变量,不会因数据缺失报错。
内容的提问来源于stack exchange,提问作者askingstuff
相关产品推荐
相关产品推荐

