如何使用Groovy和JMeter提取json变量
使用JMeter 3.3调用REST API,我有以下JSON响应:如何使用Groovy和JMeter提取json变量,groovy,jmeter,Groovy,Jmeter,使用JMeter 3.3调用REST API,我有以下JSON响应: {"map":{},"meta":{"code":"123"}} 如何提取代码(123)的值 到目前为止,我使用的是: 螺纹组 HTTP请求 JSON提取器 使用这2个变量:code;元代码 这个json路径表达式:$.code;$。元代码 JSR223断言 使用此Groovy代码: String codeString = vars.get("code"); String meta = vars.get("me
{"map":{},"meta":{"code":"123"}}
如何提取代码(123)的值
到目前为止,我使用的是:
- 螺纹组
- HTTP请求
- JSON提取器
code;元代码
这个json路径表达式:$.code;$。元代码
- JSR223断言
使用此Groovy代码:
String codeString = vars.get("code");
String meta = vars.get("meta");
log.info ("The code answer is " + codeString);
if (codeString != "000"){
AssertionResult.setFailureMessage("The code is: " + codeString + " - meta is: " + meta);
AssertionResult.setFailure(true);
}
这是断言结果:
Assertion error: false
Assertion failure: true
Assertion failure message: The code is: No_Default - meta is: {"code":"000"}
JSON路径表达式$中存在错误。code
用于获取代码,它位于第二层次结构下,因此缺少
,请使用以下命令:
$..code
您可以使用JsonSlurper
提取您感兴趣的数据:
import groovy.json.JsonSlurper
String json = prev.getResponseDataAsString()
def root = new JsonSlurper().parseText(json)
def code = root.meta.code
如果您使用Groovy,则不需要JSON路径提取器,您可以验证代码,如:
def code = com.jayway.jsonpath.JsonPath.read(prev.getResponseDataAsString(), '$..code').get(0).toString()
if (!code.equals('000')) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('The code is ' + code)
}
更多信息: