2016-10-14 105 views
0

JSONレスポンスで文字列を置き換える最も良い方法は何ですか?私の場合、私は正規表現で応答を抽出する必要があります。抽出された値はsavedItemsとして保存され、その保存されたアイテム内では、私は下の文字列を検索して置き換え、再度ポストする必要があります。 2つのリクエストでは、最初に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} 

置き換えられる可能性がありますので、推奨事項はありますか?私はまだ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

関連する問題