JMeter调用Java REST PUT接口遇反序列化错误求助
解决JMeter调用Java REST PUT接口时Jackson反序列化失败问题
最近做接口压测时碰到个头疼的问题:我需要用JMeter读取CSV文件的数据调用Java写的REST PUT接口,CSV配置和请求都搭好了,但Java端一直报反序列化错误。不过用Postman手动传下面这段JSON是完全正常的:
{ "productId": "ABC", "score": 4.42489 }
踩过的坑
一开始我在请求体里直接写
$score引用CSV里的分数字段,结果Java端直接抛了这个错:com.fasterxml.jackson.databind.exc.InvalidFormatException: 无法从字符串'$score'构造double实例这明显是JMeter没识别出变量,直接把
$score当字符串传给接口了,Jackson自然没法把它转成double类型。后来改成JMeter标准的变量引用格式
${productId}和${score},结果又出现了4个同类的解析错误:com.fasterxml.jackson.core.JsonParseException: 意外字符'T'这说明生成的JSON格式出了问题,大概率是CSV读取时的配置不对——比如分隔符不匹配、字段没处理好,导致变量替换后JSON语法错乱了。
最终解决办法
最后通过调整CSV Data Set Configuration的参数解决了问题,给大家提几个要重点检查的配置项:
- 确认分隔符和你CSV文件实际用的一致(比如逗号、制表符,别搞错了)
- 如果CSV里有带引号的字段,一定要勾选Allow quoted data
- 检查Variable Names的命名/顺序是否和CSV的列完全对应
- 根据你的测试场景调整Recycle on EOF和Stop thread on EOF的设置
感谢@user7294900的提示,帮我快速定位到了配置上的问题!
内容的提问来源于stack exchange,提问作者User_Targaryen
相关产品推荐
相关产品推荐

