如何在JMeter中从CSV获取完整JSON请求体并正确发送
解决JMeter读取CSV中转义JSON作为请求体的问题
方案一:修改CSV文件格式(推荐)
直接调整CSV内容,去掉外层包裹的双引号和内部的转义双引号,让每个JSON单独占一行:
{"data":{"student":{"name":"random name"}}} {"data":{"student":{"name":"random name2"}}}
之后在CSV数据集配置里将变量名设为body,请求体直接引用${body}即可。同时记得在请求头管理器中添加Content-Type: application/json,确保服务器识别请求体格式。
方案二:在JMeter中处理转义字符串(无法修改CSV时)
如果不能改动原CSV文件,通过JMeter内置函数或Groovy脚本清理转义内容:
- 字符串替换+截取组合:
在请求体中用以下表达式替代${body}:
逻辑:先用${__substring(${__strReplace(${body},\"\"\",\"\",)},1,-1)}__strReplace把所有""替换为",再用__substring去掉首尾的外层双引号。 - Groovy脚本(更简洁可靠):
请求体中使用Groovy函数处理:
逻辑:通过Groovy脚本先替换转义双引号,再移除字符串首尾的包裹引号,直接得到纯净的JSON内容。${__groovy(vars.get("body").replaceAll('""','"').replaceAll(/^"|"$/,''),)}
关键注意点
必须在请求头管理器中添加Content-Type: application/json,否则即使请求体内容正确,服务器也可能将其当作普通字符串解析。
内容的提问来源于stack exchange,提问作者Amir Hossain
相关产品推荐
相关产品推荐

