You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON解析语法错误(Unexpected string in JSON at position 49)求助:新手开发者关于body-parser库的疑问

排查并解决JSON解析语法错误的方案

首先,这个错误明确是JSON格式不合法导致的——body-parser在尝试将请求体解析为JSON时,遇到了不符合JSON规范的字符串。结合你的代码和错误信息,我们可以从这几个方向逐步排查:

1. 修复body-parser的配置问题

你当前代码里写的app.use(bodyParser());是body-parser的旧用法,而且它默认不会自动解析JSON格式的请求体。正确的做法是明确指定解析规则:

// 替换原来的 app.use(bodyParser());
app.use(bodyParser.json());
// 如果你的项目同时需要解析表单格式的请求体,可以再加这一行
app.use(bodyParser.urlencoded({ extended: true }));

如果你的客户端请求是发送JSON数据(请求头带有Content-Type: application/json),但body-parser没有配置成解析JSON,它会用默认规则尝试解析,很容易触发JSON语法错误。

2. 检查请求体的JSON格式是否合法

错误提示里的position 49指向JSON字符串的第49个字符位置出现了异常。你可以通过以下方式验证请求体:

  • 打开浏览器开发者工具(F12),切换到Network标签页,找到触发错误的请求,查看Request Payload的内容是否符合JSON规范:
    • 所有字符串必须用双引号包裹(不能用单引号)
    • 对象的键名必须用双引号包裹
    • 不能存在末尾多余的逗号(trailing comma)
    • 特殊字符(比如换行、引号)需要正确转义

举个错误示例:

{ 'username': 'test', age: 20, }

对应的正确JSON:

{ "username": "test", "age": 20 }

3. 修复路由挂载的路径错误

你的代码里路由挂载写的是app.use('api', userRoutes);,这里缺少了路径开头的斜杠,正确写法应该是:

app.use('/api', userRoutes);

虽然这个问题不会直接导致JSON解析错误,但会导致API路由无法被正确访问,进而引发其他异常,建议一起修复。

4. 额外的调试技巧

如果还是找不到问题,可以在body-parser之前添加一个中间件,打印原始请求体,直观排查内容问题:

app.use((req, res, next) => {
  let rawBody = '';
  req.on('data', chunk => {
    rawBody += chunk;
  });
  req.on('end', () => {
    console.log('原始请求体内容:', rawBody);
    next();
  });
});
// 之后再挂载body-parser
app.use(bodyParser.json());

运行项目后,查看控制台打印的请求体,就能快速定位哪部分内容不符合JSON规范了。


内容的提问来源于stack exchange,提问作者Göktürk Ölmez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 14:09:11