如何移除JMeter请求体中变量替换后自动添加的多余引号
JMeter POST请求变量替换多余双引号解决方案
你遇到的变量替换后自动新增双引号的问题,是JMeter处理JSON格式请求体时,默认对识别为字符串类型的变量自动添加引号导致的,可通过以下方案解决:
方案1:使用__raw()函数包裹变量(最便捷)
__raw()函数会强制JMeter输出变量的原始值,不做额外的引号拼接或转义处理,直接修改Body Data内容即可:
{"query": "{getSingleArticle(id: ${__raw(${art_id})}){MatlDesc, ClassDesc}}"}
方案2:将变量显式转为数值类型
如果变量本身是数值格式,可通过JSR223 PreProcessor提前把变量转换为数值类型,JMeter不会给数值类型的变量自动加引号:
- 对应HTTP请求下新增JSR223 PreProcessor
- 写入如下Groovy代码:
vars.putObject("art_id_num", Long.parseLong(vars.get("art_id").replace("\"", "")))
- 把Body Data中的
${art_id}替换为${art_id_num}
方案3:关闭JSON自动格式化配置
较新版本JMeter会默认对JSON格式的请求体做自动格式化,可通过以下配置关闭该逻辑:
- 打开HTTP Request Sampler配置页,切换到「Advanced」标签
- Client implementation选择
Java选项,即可禁用默认的JSON自动加引号逻辑
修改完成后可通过「察看结果树」的Request标签页,验证实际发送的请求是否已去掉多余双引号。
内容的提问来源于stack exchange,提问作者MStikh
相关产品推荐
相关产品推荐

