Невозможно извлечь значение из json и использовать его в последующем запросе

#jmeter-5.0

#jmeter-5.0

Вопрос:

Мой тест получает json в ответ следующее.

 {"result":"success","additional-info":"{"q-list":[{"tag":"un2-new tag2-empty","description":"some description2","q-id":"5c86fb8a-d9ce-4978-be4c-2c4b547c7868","creation-year":2020,"creation-month":11,"creation-hour":8,"creation-minute":48}],"pagination-info":{"page-state":"004400100038000800000000000000080800000000000000302435633836666238612d643963652d343937382d626534632d326334623534376337383638f07ffffffef07ffffffe9fde9512dc65b09db4b903cca66a71aa0004","partition-info":{"year":2020,"month":11}}}"}
 

Я хочу извлечь q-id из ответа и использовать его в следующем запросе. Я создал следующий экстрактор.

введите описание изображения здесь

и я использую его следующим образом:

введите описание изображения здесь

Но я вижу, что ценность не извлекается.

введите описание изображения здесь

Что я делаю не так?

Ответ №1:

Рад принять другие ответы. Я смог решить эту проблему с помощью beanshell скрипта. Однако я до сих пор не знаю, почему извлечение значения из Regular Expression Extractor не сработало.

Сценарий Beanshell

 import com.eclipsesource.json.*;

//prev.setSuccessful(false);
try {
    String jsonString = prev.getResponseDataAsString(); //response as string
    log.info("received json string: " jsonString);
    
    JsonObject responseAsJsonObject = JsonObject.readFrom(jsonString); //convert response string as json
    log.info("converted to object: " responseAsJsonObject);
    
    String additionalInfoString = responseAsJsonObject.get("additional-info").asString(); //get additional info string from json object
    log.info("additional info as string: " additionalInfoString);
    
    JsonObject additionalInfoJsonObject = JsonObject.readFrom(additionalInfoString); //convert additional info string to json
    log.info("additional info as object: " additionalInfoJsonObject);
    
    JsonArray questionListObject = additionalInfoJsonObject.get("questions-list").asArray(); //get questions list array
    log.info("questions list: " questionListObject );
    
    JsonObject firstQuestionFromList = questionListObject.get(0).asObject(); //get 1st question
    log.info("first question: " firstQuestionFromList);
    
    String questionID = firstQuestionFromList.get("question-id").asString();
    log.info("question id of 1st question " questionID);
    vars.put("questionIDFromBeanShell",questionID); //use this in next request
//  prev.setSuccessful(true);
} catch (Exception e){
    log.info("error in processing beanshell script: ", e);
    prev.setSuccessful(false);
}
 

введите описание изображения здесь