使用JMeter 3.3调用REST API,我有以下JSON响应:
@Column(columnDefinition="text", length=10485760)
private String configFileXml = "";
如何提取代码(123)的值?
到目前为止,我正在使用它:
这2个vars:{"map":{},"meta":{"code":"123"}}
和这个json路径表达式:code; meta
使用这个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);
}
答案 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