JMeter JSON提取器问题:变量名无后缀,处理两种mediaType返回值
处理JMeter JSON提取器中mediaType的两种返回情况
我来帮你搞定这个问题!你的API返回的mediaType有两种情况:一种是包含vl字段的对象,另一种是null。要正确提取媒体计划的值(也就是vl字段的内容,比如例子里的"Television"),可以按下面的步骤配置JSON提取器:
1. 兼容两种情况的JSON Path表达式
你需要用支持可选链式操作的JSON Path语法,这样不管mediaType是对象还是null,提取器都能正常工作:
- 填入表达式:
$.mediaType?.vl - 这里的
?.是关键:如果mediaType存在(非null),就提取它的vl字段;如果mediaType是null,表达式会返回空值,不会触发提取错误。
2. JSON提取器的具体配置
在你的JSON提取器面板里,按以下参数设置:
- 引用名称:保持你当前的
var(或者改成更直观的名字,比如media_plan_value) - JSON Path表达式:粘贴
$.mediaType?.vl - 匹配数字:填
1(因为你只需要第一个匹配结果) - 默认值:建议设置一个明确的默认值,比如
NO_MEDIA_TYPE或者空字符串"",这样当mediaType为null时,变量会被赋值为这个默认值,方便后续测试逻辑判断
3. 验证提取效果
- 当API返回情况1的对象时,
var_1会被正确设置为Television(和你之前看到的结果一致) - 当API返回情况2的
null时,var_1会被设为你指定的默认值,不会出现提取失败的情况
额外提示:后续空值处理逻辑
如果需要在测试中根据提取结果做分支判断,可以用JMeter的If Controller或者BeanShell PostProcessor。比如在BeanShell里写一段简单的判断代码:
String mediaValue = vars.get("var_1"); if (mediaValue == null || mediaValue.equals("NO_MEDIA_TYPE")) { log.info("mediaType is null, using default value"); // 这里可以添加mediaType为null时的处理逻辑 } else { log.info("Successfully extracted media type: " + mediaValue); // 处理正常提取的情况 }
这样就能完美兼容两种返回场景啦!
内容的提问来源于stack exchange,提问作者Preeti
相关产品推荐
相关产品推荐

