JMeter:如何判断采样器返回值是否为空?代码问题排查
问题2:JSON数组判断逻辑导致Switch控制器无法进入Else分支的排查与解决
你的代码问题主要出在字符串比较方式和变量引用的安全性上,我来帮你拆解并修复:
问题根源
- 错误的字符串比较:在Java/Groovy中,
==是用来比较对象的内存地址,而不是字符串内容。哪怕两个字符串内容完全一样,只要是不同的对象实例,==就会返回false。你需要用equals()方法来比较字符串的实际内容。 - 不安全的变量引用:直接在脚本里写
${Key},如果Key变量提取失败(比如JSON里没有这个Key),脚本会把"${Key}"当作字符串来处理,这时候和"[]"比较肯定不相等,但实际这种情况应该视为empty。用vars.get("Key")可以安全获取变量值,不存在时返回null。 - 未处理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
相关产品推荐
相关产品推荐

