2016-10-14 76 views
0

在JSON響應中替換字符串的最佳方式是什麼?就我而言,我需要用正則表達式提取響應。提取的值被保存爲savedItems並保存在保存的項目中,我需要搜索下面的字符串並替換然後再次發佈。在2個請求中,首先請求第二個請求(字符串被替換)。如何在json響應中替換字符串並將其發送給jmeter

我想在正則表達式提取器內使用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; 
} 

回答

0

你爲什麼不考慮jmeter.log文件?

根據String.replaceAll()方法的文檔:

注意,在替換字符串中的反斜槓()和美元符號($)可能會造成比如果它被視爲文字替換字符串的結果是不同的;見Matcher.replaceAll。如果需要,使用Matcher.quoteReplacement(java.lang.String)來抑制這些字符的特殊含義。

因此,你需要用2個反斜槓像修改您更換線路和逃生美元符號:

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

相關問題