如何使用Groovy和JMeter提取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

使用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("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)
}
更多信息: