如何移除JMeter中Groovy脚本生成JSON的多余字符
解决Groovy生成JSON请求时多余转义字符问题
问题根源
你遇到的多余\"是因为手动拼接JSON字符串时重复处理了引号转义,或是从CSV读取的原始数据本身带有多余引号,最终导致生成的JSON格式出错。
解决方案
优先用Groovy内置的JSON工具类生成请求体,避免手动拼接的失误,具体操作如下:
1. 规范CSV数据格式
确保Excel/CSV里的values列数据不要带额外引号,直接用逗号分隔值即可,比如:
AB1234,CB6988,BM9899
如果CSV数据已经带引号,读取时先批量去除:
def rawValues = vars.get("values").replaceAll(/"/, "") // 去掉所有多余引号 def valueList = rawValues.split(",").collect { it.trim() }
2. 用JsonBuilder自动生成正确JSON
不要手动拼接字符串,用Groovy的JsonBuilder构建请求体,它会自动处理字符串转义逻辑:
// 从JMeter变量获取CSV中的values值 def csvValues = vars.get("values") // 分割为干净的字符串列表 def valueList = csvValues.split(",").collect { it.trim() } // 构建目标JSON结构 def jsonBuilder = new groovy.json.JsonBuilder() jsonBuilder([ [ key: "Login", operator: "EQUAL", fieldType: "STRING", values: valueList ] ]) // 将生成的JSON存入变量,供请求体调用 vars.put("requestBody", jsonBuilder.toString())
3. 替换错误的手动拼接代码
如果之前是类似下面的手动拼接写法,直接替换成上面的JsonBuilder方案:
// 错误示例:手动拼接导致转义混乱 def valuesStr = "\"AB1234\",\"CB6988\"" def requestBody = "[{\"key\":\"Login\",\"values\":[" + valuesStr + "]}]"
内容的提问来源于stack exchange,提问作者Sylvia
相关产品推荐
相关产品推荐

