Postman向Node服务器发送JSON字符串时触发SyntaxError报错如何解决
错误原因
抛出这个SyntaxError的核心原因是你提交的请求体不符合标准JSON语法规范:
- 标准JSON规范要求所有字符串类型的键、值都必须使用半角双引号
"包裹,不支持单引号作为字符串边界符 - 你在
details字段处用单引号包裹了序列化后的JSON字符串,服务端的JSON解析器读到单引号时就会判定语法异常,最终抛出对应位置的解析错误。
修复方案
将details字段值外层的单引号替换为双引号,同时对值内部原本存在的双引号添加反斜杠转义即可,修改后的合法请求体如下:
POST http://localhost:8888/user Content-Type: application/json { "user": { "details": "{\"name\":\"Peter\",\"age\":21}", "foo": "bar" } }
额外注意点
- 如果是在前端JS代码中组装请求参数,不需要手动做转义:直接把
JSON.stringify(json)的返回值赋值给details字段即可,axios、fetch等请求库在对整个请求体做JSON序列化时,会自动完成内部双引号的转义处理 - Postman自带JSON语法校验能力,编辑请求体时如果存在语法错误会直接在对应位置标红,发送请求前可以先留意编辑器的校验提示,避免无效请求。
内容的提问来源于stack exchange,提问作者peter flanagan
相关产品推荐
相关产品推荐

