You need to enable JavaScript to run this app. JMeter使用JSR223断言校验JSON响应时触发keySet方法缺失异常
优惠活动
大模型
产品
解决方案
定价
更多

JMeter使用JSR223断言校验JSON响应时触发keySet方法缺失异常

脚本触发异常的核心问题
  • 方法调用的类型不匹配是直接报错根源:接口响应的顶层为JSON数组结构,经JsonSlurper解析后,jsonResponse的实际类型是java.util.ArrayList,但keySet()是Map类型(对应JSON对象结构)才有的方法,ArrayList本身没有实现该方法。你没有遍历数组内部的JSON对象,直接对数组本身调用仅Map支持的keySet()方法,自然会因找不到匹配的方法签名抛出MissingMethodException。
  • 方法参数传递存在语法错误:即使解决了第一层类型问题,当你获取到数组内的JSON对象(Map结构)后,containsAll方法要求传入的入参是一个集合类对象,你当前直接将"id","name","city","@type"四个字符串以多参数形式传入,不符合方法的参数定义,会触发新的方法不匹配报错。
匹配校验需求的正确实现参考

需要先遍历数组中的每一个JSON对象,逐一对对象的键集合做完整性校验:

import groovy.json.JsonSlurper
def failureMessage = ""
def jsonResponse = new JsonSlurper().parseText(prev.getResponseDataAsString())
def requiredKeys = ["id", "name", "city", "@type"]

jsonResponse.each { item ->
    if (!item.keySet().containsAll(requiredKeys)) {
        failureMessage += "响应JSON对象结构不符合要求,缺失指定键,当前对象内容:${item}\n"
    }
}

if (failureMessage) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage(failureMessage)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 16:54:04