Jmeter Groovy如何用{
使用JSR223 Groovy在Jmeter中..我花了很多时间试图在JSON块中替换这个字符串Jmeter Groovy如何用{,groovy,jmeter,Groovy,Jmeter,使用JSR223 Groovy在Jmeter中..我花了很多时间试图在JSON块中替换这个字符串 "ABC": {"seconds": 20}, 与 我试过了 str1 = str1.replaceAll('"ABC": {"seconds": 20}', '"ABC": {"seconds": '+${myVal}+'"}"'); 但它不起作用。请帮助,考虑: def s = ''' {"ABC": {"seconds": 20}, "DEF": {"seconds": 30},
"ABC": {"seconds": 20},
与
我试过了
str1 = str1.replaceAll('"ABC": {"seconds": 20}', '"ABC": {"seconds": '+${myVal}+'"}"');
但它不起作用。请帮助,考虑:
def s = '''
{"ABC": {"seconds": 20},
"DEF": {"seconds": 30},
"IJK": {"seconds": 40}}
'''
def myVal = 88
def oldRegex = /"ABC": \{"seconds": 20\}/
def newStr = '"ABC": {"seconds": ' + myVal + '}'
def s2 = s.replaceAll(oldRegex, newStr);
println s2
请注意,
replaceAll
的第一个参数是正则表达式,这意味着必须对{
和}
进行转义。在Groovy中转义字符时,我们通常更喜欢/\{/
(一个slashy字符串)而不是“\{”
使用正则表达式替换JSON中的值不是最好的主意,因为它非常脆弱,任何额外的空间或换行符都会破坏测试
我建议改为使用和类组合。此外,不要将JMeter变量称为${myVal}
,更好的选择是vars.get('myVal')
完整示例代码以防万一:
vars.put('myVal', '1234')
def foo = '{\n' +
' "ABC": {\n' +
' "seconds": 20\n' +
' }\n' +
'}'
def json = new groovy.json.JsonSlurper().parseText(foo)
json.ABC.seconds = vars.get('myVal') as int
log.info(new groovy.json.JsonBuilder(json).toPrettyString())
演示:
更多信息:
vars.put('myVal', '1234')
def foo = '{\n' +
' "ABC": {\n' +
' "seconds": 20\n' +
' }\n' +
'}'
def json = new groovy.json.JsonSlurper().parseText(foo)
json.ABC.seconds = vars.get('myVal') as int
log.info(new groovy.json.JsonBuilder(json).toPrettyString())