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
相关产品推荐
相关产品推荐

