2016-10-14 4 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)을 사용하여 이러한 문자의 특수한 의미를 억제하십시오.

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

그래서 당신은 같은 2 백 슬래시와 달러 기호를 교체 라인을 개정 탈출해야합니다

관련 문제