как заменить строки в ответе json и отправить его jmeter

#json #regex #jmeter #beanshell

#json #регулярное выражение #jmeter #beanshell

Вопрос:

Каков наилучший способ замены строк в ответе JSON? В моем случае мне нужно извлечь ответ с помощью регулярного выражения. Извлеченное значение сохраняется как savedItems, и в этих сохраненных элементах мне нужно выполнить поиск приведенных ниже строк и заменить, а затем опубликовать его снова. В 2 запросах сначала запрашивайте получение, затем отправляйте сообщение со 2-м запросом (строки заменены).

Я пытаюсь использовать постпроцессор BellShell в экстракторе регулярных выражений и пытаюсь заменить, но, похоже, это не работает.

 Original string: rate":10.370681}
Replace with this: rate":10.370681,"$rowSelect":false,"$rowState":"invalid":false,"dirty":false,"added":false}
  

Возможно, необходимо заменить 100-500, так что какие-либо рекомендации? Я все еще новичок в beanshell и попробовал использовать приведенные ниже коды, но пока не повезло 🙂

 debug();

try {
String savedItems = vars.get("Saved_Item");

String updatedSavedItems =  savedItems.replaceAll("rate":10//.370681//}", "rate":10//.370681,"//$rowSelect":false,"//$rowState"://{"invalid":false,"dirty":false,"added":false//}");

vars.put("UPDATED", updatedSavedItems);
}

catch (Throwable ex) {
 log.error("Problem in Beanshell", ex);
 throw ex;
 }
  

Ответ №1:

Почему бы вам не заглянуть в jmeter.файл журнала?

Согласно документации по методу String.replaceAll():

Обратите внимание, что обратная косая черта () и знаки доллара ($) в строке замены могут привести к тому, что результаты будут отличаться от того, если бы они обрабатывались как строка буквальной замены; см. Matcher.replaceAll . Используйте Matcher.quoteReplacement(java.lang.Строка), чтобы при желании подавить специальное значение этих символов.

Итак, вам нужно изменить строку замены и экранировать знаки доллара с помощью 2 обратных косых черт, например:

 String updatedSavedItems = savedItem.replaceAll("rate":10", " rate":10.370681,"\$rowSelect":false,"\$rowState":"invalid":false,"dirty":false,"added":false}");
  

ДЕМОНСТРАЦИЯ:

Замена оболочки

Дополнительная информация: https://www.blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell