Spring Boot JWT认证项目JSON解析错误求助
解决Spring Boot JWT注册接口JSON解析错误问题
问题原因
从错误日志里能看到核心问题:Unexpected character (''' (code 39)),这说明你的curl请求发送的JSON数据里包含了非法的单引号字符。
问题出在你的curl命令上:你用单引号包裹了JSON内容,但在Windows CMD环境下,单引号并不会被当作字符串的边界符号,反而会被直接作为请求体的一部分发送给服务器,导致服务器收到的内容是'{"username":"user","password":"user"}',而不是标准的{"username":"user","password":"user"},Jackson自然无法解析这种带单引号的非法JSON。
解决方案
针对不同的终端环境,给你两种可行的解决方式:
1. 直接修改curl命令(适配Windows CMD)
把包裹JSON的单引号换成双引号,同时对JSON内部的双引号进行转义:
curl -i -H "Content-Type: application/json" -X POST -d "{\"username\":\"user\",\"password\":\"user\"}" http://localhost:9000/api/auth/register
2. 使用文件传递JSON(跨平台通用)
这种方式更不容易出错,适合所有终端环境:
- 先创建一个
register.json文件,内容为标准JSON:
{"username":"user","password":"user"}
- 然后用curl读取文件内容作为请求体:
curl -i -H "Content-Type: application/json" -X POST -d @register.json http://localhost:9000/api/auth/register
验证方法
你可以先在终端里执行echo '{"username":"user","password":"user"}'(Windows CMD下),会发现输出内容是带单引号的,这就能确认单引号被当作了内容的一部分,而不是字符串分隔符。
内容的提问来源于stack exchange,提问作者Jeff Cook
相关产品推荐
相关产品推荐

