使用Groovy修改JMeter请求体内联JSON变量属性赋值异常咨询
JMeter Groovy脚本修改JSON属性异常修复
问题根因
你当前脚本的链式写法存在逻辑错误:在链式调用中直接执行属性赋值时,Groovy会将赋值操作的右值(即false)作为整个表达式的返回值传入JsonBuilder,最终序列化输出只有布尔值false,不会生成你需要的完整JSON结构。
另外你贴出的示例JSON末尾存在多余逗号,实际存储在JMeter变量中的JSON需要保证语法合法,否则会触发解析报错。
正确实现代码
将以下代码直接填入请求Body Data区域即可,注意${之间不要加空格,否则JMeter无法识别函数:
${__groovy( // 解析JMeter变量中存储的JSON字符串为对象 def notificationObj = new groovy.json.JsonSlurper().parseText(vars.get('notification')) // 修改目标属性 notificationObj.isRead = false // 重新序列化为JSON字符串返回 return new groovy.json.JsonBuilder(notificationObj).toPrettyString() ,)}
可选优化
- 如果不需要格式化缩进的JSON结构,可以将
toPrettyString()替换为toString(),减小请求体体积 - 如果需要把修改后的JSON同步存回JMeter变量供后续请求使用,可以在return语句前加一行
vars.put('notification', new groovy.json.JsonBuilder(notificationObj).toString())
内容的提问来源于stack exchange,提问作者Joosep Parts
相关产品推荐
相关产品推荐

