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

TypeScript+MySQL API更新JSON数据失败,Postman传参报错求助

排查JSON更新接口的语法错误问题

问题根源定位

报错SyntaxError: Unexpected token " in JSON at position 4发生在body-parser的JSON解析环节,说明Postman发送的请求体不符合标准JSON规范,请求还没到达你的updateFooterGeneral函数就被拦截了,和数据库更新逻辑无关。

核心排查步骤

1. 检查Postman请求头配置

确认请求头的Content-Type必须设置为application/json:

  • 如果误选了form-data、x-www-form-urlencoded或其他格式,body-parser的JSON解析器会无法识别请求体,直接抛出语法错误。
  • 对比你能正常工作的插入请求,确保更新请求的Content-Type配置完全一致。

2. 校验请求体的JSON格式

根据报错提示的position 4,重点检查请求体前几个字符的格式问题:

  • JSON要求所有键名和字符串必须用双引号包裹,不能用单引号。比如错误写法:{'title': "footer"},正确写法:{"title": "footer"}
  • 不能存在末尾多余的逗号(trailing comma),比如{"a": 1, "b": 2,}
  • 字符串中的特殊字符(比如双引号、反斜杠)必须转义,比如{"content": "This is a \"test\" content"}

3. 对比插入请求的参数格式

既然插入功能正常,把更新请求的参数和插入请求的参数做对比:

  • 检查是否新增了嵌套JSON字段,且该字段的格式有误
  • 确认更新请求中是否有拼写错误(比如键名少写了双引号)

4. 后端添加日志辅助验证

在你的TypeScript代码中配置body-parser保留原始请求体,打印出来直接排查:

// 配置body-parser时保留原始请求体
app.use(bodyParser.json({
  verify: (req, res, buf) => {
    (req as any).rawBody = buf.toString();
  }
}));

// 在updateFooterGeneral接口中打印原始请求体
async function updateFooterGeneral(req: Request, res: Response) {
  console.log('原始请求体内容:', (req as any).rawBody);
  // 原有逻辑...
}

通过打印的原始内容,能直接看到哪部分不符合JSON规范。

5. 用JSON校验工具定位问题

把Postman中的请求体复制到JSON校验工具(本地工具或在线校验器),工具会直接指出语法错误的位置和原因,快速定位问题。

内容的提问来源于stack exchange,提问作者jaga b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:05:15