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

Node+Express开发REST API时Postman调用报Unexpected token in JSON错误

问题解决方案

问题原因

  • 核心报错是express.json()中间件尝试解析请求体时,收到的内容不是合法JSON格式,所以抛出解析错误
  • 浏览器访问走的是GET请求,无请求体,不会触发JSON解析逻辑,所以正常返回;Postman发送的是带请求体的POST请求,配置不当就会触发该错误

解决步骤

1. 修正Postman请求配置

  • 选中POST请求的Body标签,勾选raw选项,右侧下拉格式选择JSON,不要使用form-data、x-www-form-urlencoded格式
  • 输入符合JSON语法的请求体,示例:
{
  "id": 22,
  "name": "测试学生",
  "class": "10"
}
  • 检查Headers标签,确认存在Content-Type: application/json的配置,如无则手动添加

2. 补充代码容错逻辑,避免崩溃

调整server.js,添加JSON解析错误处理中间件

在所有路由之后、app.listen之前添加如下代码:

// 捕获JSON解析错误
app.use((err, req, res, next) => {
  if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
    return res.status(400).send({ error: '请求体JSON格式不合法' });
  }
  next();
});

同时给所有路由的Promise添加catch错误捕获,以POST路由为例:

app.post('/api/student',(req, res)=>{
    const student = req.body;
    data.getStudent()
    .then(students=>{
        students.push(student)
        return data.insertStudent(students)
    })
    .then(() =>{
        res.send(students)
    })
    .catch(err => {
        res.status(500).send({error: '操作失败', msg: err.message})
    })
})

调整data.js,补充读写和JSON解析错误处理

const fs = require('fs');

const getStudent = ()=>{
    return new Promise((resolve, reject)=>{
        fs.readFile('./db.json', 'utf-8',(err, data)=>{
            if (err) return reject(err);
            try {
                const student = JSON.parse(data);
                resolve(student);
            } catch (parseErr) {
                reject(new Error('db.json格式损坏,解析失败'));
            }
        })
    })
}

const insertStudent = (students) =>{
    return new Promise((resolve,reject)=>{
        // 第三个参数2用于格式化JSON输出,提升db.json可读性
        fs.writeFile('./db.json',JSON.stringify(students, null, 2),(err)=>{
            if (err) return reject(err);
            resolve("ok");
        })
    })
}

module.exports.getStudent = getStudent;
module.exports.insertStudent = insertStudent;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:09:00