如何使用Groovy和JMeter提取json var

时间:2018-02-20 11:46:25

标签: groovy jmeter

使用JMeter 3.3调用REST API,我有以下JSON响应:

@Column(columnDefinition="text", length=10485760)
private String configFileXml = ""; 

如何提取代码(123)的值?

到目前为止,我正在使用它:

  • 线程组
  • HTTP请求
  • JSON Extractor

这2个vars:{"map":{},"meta":{"code":"123"}} 和这个json路径表达式:code; meta

  • JSR223 Assertion

使用这个Groovy代码:

$.code; $.meta

这是断言结果:

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); 
}  

3 个答案:

答案 0 :(得分:2)

您在JSON路径表达式import {Router, hashHistory, Switch, NavLink, Route} from "react-router-dom"; const history = createHistory(); ... <Router history={history}> 中出错以获取代码,它在第二层次结构下,因此您缺少$.code,请使用以下内容:

.

答案 1 :(得分:2)

鉴于您使用Groovy,您不需要JSON路径提取器,您可以验证您的code

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)
}

更多信息:

答案 2 :(得分:1)

您可以使用JsonSlurper提取您感兴趣的数据:

import groovy.json.JsonSlurper

String json = prev.getResponseDataAsString()

def root = new JsonSlurper().parseText(json)
def code = root.meta.code