#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