JMeter中提取的字符串无法正确传入请求body对象如何解决
JMeter接口传参JSON语法错误修复
错误根因
JSON语法规范要求字符串类型的字段值必须使用双引号包裹,你当前存储的${thisThing}变量值仅为纯文本THING,未携带外层双引号,直接拼接后生成的"thing": THING不符合JSON格式要求;同时你生成的请求体中最后一个键值对末尾多了冗余逗号,也会触发解析器的「意外标记」报错。
可行修复方案
- 最简便方案:手动给变量包裹双引号
直接修改请求Body配置,在变量外层补充JSON要求的双引号即可,同时删掉最后一个键值对后面的冗余逗号:
该方案适用于提取的变量值不包含未转义双引号、换行、反斜杠等JSON特殊字符的场景,绝大多数常规接口测试场景都能满足。{ "foo": "bar", "thing": "${thisThing}" } - 特殊字符兼容方案:转义后再传参
如果提取的变量值本身包含双引号、斜杠、换行符等特殊内容,直接套引号会破坏JSON结构,可借助Groovy的JSON序列化能力自动处理转义:- 先在测试计划的JSR223取样器/后处理中导入依赖,提前生成带正确转义和引号的变量:
import groovy.json.JsonOutput vars.put("thisThingEscaped", JsonOutput.toJson(vars.get("thisThing"))) - 请求体中直接调用转义后的变量即可,不需要额外加引号:
{ "foo": "bar", "thing": ${thisThingEscaped} }
- 先在测试计划的JSR223取样器/后处理中导入依赖,提前生成带正确转义和引号的变量:
- 提取阶段保留引号(不推荐)
调整你提取响应值的正则/JSONPath规则,提取时连同值外层的双引号一起捕获,让${thisThing}本身存储"THING"格式的内容,也能直接拼接出合法JSON,但这种方法对特殊字符的兼容性差,维护成本高,不建议优先使用。
内容的提问来源于stack exchange,提问作者dsp
相关产品推荐
相关产品推荐

