Как извлечь json var с помощью Groovy и JMeter
Вызывая REST API с помощью JMeter 3.3, я получаю следующий ответ JSON:
{"map":{},"meta":{"code":"123"}}
Как я могу извлечь значение кода (123)?
Пока я использую это:
- Группа Потоков
- HTTP-запрос
- JSON Extractor
С этими 2 Варс: code; meta
и этот путь JSON выражений: $.code; $.meta
- утверждение JSR223
С этим заводным кодом:
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"}
3 ответов:
У вас есть ошибка в выражении пути JSON
$.codeдля получения кода, он находится под второй иерархией и поэтому вы пропускаете., используйте следующее:$..code
Учитывая, что вы используете 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) }Дополнительная информация:
Вы можете использовать
JsonSlurperдля извлечения интересующих вас данных:import groovy.json.JsonSlurper String json = prev.getResponseDataAsString() def root = new JsonSlurper().parseText(json) def code = root.meta.code
Comments