使用JSR223 PreProcessor时如何移除请求中多余的{和}?
解决JSR223 PreProcessor生成API请求时多余{}的问题
排查脚本字符串拼接逻辑
多余的{}通常是因为你在脚本里把代码逻辑的大括号错误写入了输出字符串,或者手动拼接JSON时重复添加了外层{}。检查脚本中生成metrics内容的部分:如果主请求的JSON已经包含"metrics": { ... }的外层{},那么脚本里只需要生成内部的键值对内容,不要额外添加{和}。使用JSON工具类生成(推荐)
避免手动拼接字符串出错,用Groovy的JsonBuilder来构建标准JSON结构,示例代码:// 构建metrics的键值对映射 def metricsMap = [ "com.cixsoft.agent.metric.NetworkMetric": "NetworkMetric.json", "com.cixsoft.agent.metric.ProcessInfoMetric": "ProcessInfoMetric.json", "com.cixsoft.agent.metric.CpuMetric": "CpuMetric.json" ] // 生成JSON字符串 def jsonBuilder = new groovy.json.JsonBuilder(metricsMap) // 将结果存入JMeter变量,供请求引用 vars.put("metricsContent", jsonBuilder.toString())在API请求的JSON体中,直接引用变量即可:
"metrics": ${metricsContent}这种方式会自动生成正确的JSON结构,不会出现多余的{}。
修正模板语法错误
如果使用GString模板生成内容,注意不要误写${{...}}这种格式,这会导致输出额外的{}。确保模板里的大括号仅用于JSON结构,而非代码插值的语法错误。移除脚本中多余的{}
如果你是手动拼接字符串,直接删掉脚本里多余的"{"和"}"语句。比如原脚本若写了:def metricsStr = "{" + "\"com.cixsoft.agent.metric.NetworkMetric\": \"NetworkMetric.json\",\n" + "\"com.cixsoft.agent.metric.ProcessInfoMetric\": \"ProcessInfoMetric.json\",\n" + "\"com.cixsoft.agent.metric.CpuMetric\": \"CpuMetric.json\"" + "}"就把首尾的
"{"和"}"去掉,只保留中间的键值对内容,再传入请求的"metrics": { ... }中。
内容的提问来源于stack exchange,提问作者Ralph
相关产品推荐
相关产品推荐

