Как извлечь 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"}
688   3  

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

    Ничего не найдено.