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

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

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

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;
 }

person user2388556    schedule 14.10.2016    source источник


Ответы (1)


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

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

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

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

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

Демо:

Beanshell Replace

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

person Dmitri T    schedule 14.10.2016