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

在Node.js中使用Express时如何自定义处理express.json()的JSON解析错误

Express JSON解析错误自定义处理方案

核心实现逻辑

express.json() 中间件解析非法JSON时会主动抛出带400状态码的SyntaxError,你只需要添加Express标准的错误处理中间件捕获这类错误,即可实现自定义响应和日志逻辑。

完整代码示例

const express = require('express');
const app = express();

app.use(express.json());

app.post('/', function(req, res) {
    // 你的正常业务逻辑
    res.send('请求处理成功')
});

// 错误处理中间件:必须放在所有路由和普通中间件之后,且声明四个参数
app.use((err, req, res, next) => {
  // 匹配JSON解析类错误
  if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
    // 按你的需求返回自定义响应
    return res.status(400).json({
      code: 10001,
      message: '请求体JSON格式错误,请检查输入'
    })
  }
  // 其他类型错误交给后续逻辑处理
  next(err)
})

app.listen(3000, () => {
  console.log('服务启动在3000端口')
})

进阶配置(可选)

如果需要在解析阶段就介入处理,也可以通过express.json的verify参数实现:

app.use(express.json({
  verify: (req, res, buffer) => {
    try {
      JSON.parse(buffer)
    } catch (e) {
      // 自定义错误信息,或者抛出自定义错误类型方便后续识别
      e.customMessage = 'JSON格式不符合要求'
      throw e
    }
  }
}))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:15:04