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

PostgreSQL插入API报JSON解析错误,请求协助排查

JSON解析错误排查与解决(Postman测试Node.js PostgreSQL插入API)

错误信息

Unexpected token , in JSON at position 197
at JSON.parse ()
at parse (C:\Users\hp\empServers\node_modules\body-parser\lib\types\json.js:89:19)
at C:\Users\hp\empServers\node_modules\body-parser\lib\read.js:128:18
at AsyncResource.runInAsyncScope (node:async_hooks:203:9)

控制器代码

app.post("/svr/employees", function (req, res, next) {
  console.log("Request Body:", req.body);
  let { empCode, name, department, designation, salary, gender } = req.body;
  if (
    !empCode ||
    !name ||
    !department ||
    !designation ||
    salary === undefined ||
    !gender
  ) {
    res.status(400).send("Invalid data. Please provide all required fields.");
    return;
  }
  const insertQuery =
    "INSERT INTO employee (empcode, name, department, designation, salary, gender) VALUES ($1, $2, $3, $4, $5, $6)";
  const values = [empCode, name, department, designation, salary, gender];
  client.query(insertQuery, values, function (err, result) {
    if (err) {
      console.error("Error while inserting data:", err);
      res.status(500).send("An error occurred while inserting data.");
    } else {
      console.log(result);
      res.send(`${result.rowCount} insertion Successful`);
    }
  });
});

请求JSON体

{
  "empcode": 1129,
  "name": "hafsdmbdfsd",
  "department": "Technology",
  "designation": "Mansdfsdfager",
  "salary": 657567,
  "gender": "Male"
},

问题原因与修复方案

1. 直接导致JSON解析失败的原因

请求JSON末尾多了一个冗余的逗号(,),违反JSON语法规范,body-parser无法解析格式错误的JSON。

修复:移除末尾逗号,修正后的JSON如下:

{
  "empcode": 1129,
  "name": "hafsdmbdfsd",
  "department": "Technology",
  "designation": "Mansdfsdfager",
  "salary": 657567,
  "gender": "Male"
}

2. 隐藏的参数匹配问题

控制器中解构的变量是empCode(驼峰命名),但JSON字段是empcode(全小写),会导致empCode值为undefined,触发参数校验错误。

修复:统一命名规则,二选一即可:

  • 方案一:修改JSON字段为empCode;
  • 方案二:修改控制器中的解构与校验逻辑:
    let { empcode, name, department, designation, salary, gender } = req.body;
    if (
      !empcode ||
      !name ||
      !department ||
      !designation ||
      salary === undefined ||
      !gender
    ) {
      // 原有校验逻辑不变
    }
    

3. 测试验证

发送修正后的请求,body-parser可正常解析JSON,参数校验与数据库插入逻辑将正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:30:17