You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter:如何判断采样器返回值是否为空?代码问题排查

问题2:JSON数组判断逻辑导致Switch控制器无法进入Else分支的排查与解决

你的代码问题主要出在字符串比较方式和变量引用的安全性上,我来帮你拆解并修复:

问题根源

  1. 错误的字符串比较:在Java/Groovy中,==是用来比较对象的内存地址,而不是字符串内容。哪怕两个字符串内容完全一样,只要是不同的对象实例,==就会返回false。你需要用equals()方法来比较字符串的实际内容。
  2. 不安全的变量引用:直接在脚本里写${Key},如果Key变量提取失败(比如JSON里没有这个Key),脚本会把"${Key}"当作字符串来处理,这时候和"[]"比较肯定不相等,但实际这种情况应该视为empty。用vars.get("Key")可以安全获取变量值,不存在时返回null。
  3. 未处理Null场景:如果Key变量未被定义,你的原代码会默认进入else分支,但这其实是不符合预期的。

修正后的代码(用JSR223 PostProcessor,推荐Groovy)

// 安全获取变量值
def keyValue = vars.get("Key")

// 综合判断:Null 或 等于[] 都视为empty
if (keyValue == null || keyValue.equals("[]")) {
    vars.put("size", "empty")
} else {
    vars.put("size", "notempty")
}

更简洁的写法(三目运算符)

def keyValue = vars.get("Key")
vars.put("size", (keyValue == null || keyValue.equals("[]")) ? "empty" : "notempty")

额外建议

  • 尽量用JSR223元素代替BeanShell,Groovy的性能比BeanShell好很多,语法也更灵活。
  • 如果你的JSON结构复杂,推荐用${__JSONPathExtractor}来提取值,它能更精准地处理JSON数组。

内容的提问来源于stack exchange,提问作者Siddish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:21:37