JSON 常见错误大全:尾逗号、单引号、注释,一次讲透

昨天同事调接口调了一个下午,最后发现是尾逗号 ------他把 JavaScript 对象复制过来直接当 JSON 用,数组最后一个元素后面多了个逗号,前端 JSON.parse 当场报错,而他在 200 行的 JSON 里找了一个小时。

这不是个例。JSON 语法严格,很多在 JavaScript 里「顺手」的写法,放进 JSON 就会报错。这篇文章把最高频的 5 类错误一次讲透,每类都附「报错长什么样 + 正确写法」,看完能避开 90% 的坑。

为什么 JSON 比 JavaScript「严」这么多

JS 对象和 JSON 长得几乎一样,但 JSON 是一种数据交换格式,跨语言传输,所以语法必须无歧义------该加引号就加引号,该有逗号就有逗号,一个字符都不能含糊。这就是为什么你在 JS 里写得好好的,复制到 JSON 就报错。

错误一:尾逗号(最高频,没有之一)

数组或对象的最后一个元素后面多写了一个逗号:

json

csharp 复制代码
{ "name": "Tom", "age": 18, }        // ❌ 对象尾逗号
[1, 2, 3,]                            // ❌ 数组尾逗号

{ "name": "Tom", "age": 18 }          // ✅ 正确
[1, 2, 3]                             // ✅ 正确

报错长这样:

javascript 复制代码
SyntaxError: Unexpected token , in JSON at position 18

为什么老中招:JavaScript 是允许尾逗号的(ES2017 之后数组、对象、函数参数都可以),所以从 JS 里复制数据到 JSON、或者手写时顺手加个逗号,特别容易踩。

错误二:单引号

JSON 的字符串和键只能用双引号,单引号一律非法:

json

arduino 复制代码
{ 'name': 'Tom' }        // ❌ 单引号
{ "name": "Tom" }        // ✅ 双引号

报错通常是 Unexpected token ' 或者 Unexpected string。很多同学是从 Python/JS 的习惯带过来的,一不注意就写了单引号。

错误三:注释

JSON 标准不支持任何注释///* */ 都会报错:

json

json 复制代码
{
  "name": "Tom"   // 用户姓名        // ❌ 注释
}

想给 JSON 加说明,只有两条路:把说明写进字段值,或者改用支持注释的 JSON5 / JSONC 格式(VS Code 的 settings.json 用的就是 JSONC)。

错误四:键没有加双引号

对象的键必须是双引号包裹的字符串:

json

json 复制代码
{ name: "Tom" }          // ❌ 键没加引号
{ "name": "Tom" }        // ✅ 正确

这个错误和错误二经常一起出现------都是从非 JSON 语境复制过来导致的。

错误五:非法值类型

JSON 只认 6 种类型,这些 JavaScript 里的值放进 JSON 都会出问题:

json

javascript 复制代码
{ "n": NaN }             // ❌ NaN
{ "u": undefined }       // ❌ undefined
{ "fn": function(){} }   // ❌ 函数
{ "d": new Date() }      // ❌ Date 对象

遇到这些值,需要先手动转成 JSON 支持的表示------NaNnullDate 转成 ISO 字符串,函数直接丢掉。

怎么快速定位错误,而不是肉眼找

上面 5 类错误,我写的都是「正确/错误对照」,但真实场景里你面对的是几百行挤在一起的 JSON,肉眼找真的会崩溃。

我的做法是:把 JSON 粘到 JSON 常见错误排查工具 里,它会直接告诉你错误在第几行第几列、具体是什么原因------比如「第 8 行第 15 列:多余的逗号」。比自己一行行数快得多,尤其是排查接口返回的长 JSON 时。

顺带说一句,这个工具是我自己写的(个人练手项目),数据全程在浏览器本地解析,不上传服务器,所以粘生产环境的返回数据也不用担心泄露。目前功能还不全,如果你用着有哪里不顺,欢迎直接在评论区告诉我,每条都会看。

小结

错误 一句话记忆
尾逗号 最后一个元素后面不加逗号
单引号 键和字符串一律双引号
注释 JSON 里没有注释
键不加引号 键必须带双引号
非法值 只认 6 种类型

记住这 5 条,JSON 报错的 90% 都能秒懂。如果你还遇到过其他诡异的 JSON 报错,欢迎评论补充,我攒够一批再写一篇。

相关推荐
AC赳赳老秦5 小时前
个保法下数据处理:OpenClaw 自动过滤公开数据中的个人信息,保障采集分析合规性
java·python·sqlite·json·php·deepseek·openclaw
Web - Anonymous5 小时前
Vue3 + Element Plus 集成 JSON Editor 实现实时校验 JSON 编辑器(高亮/暗亮主题/分栏回显/组件复用) - 附完整示例
vue.js·编辑器·json
码云骑士6 小时前
116-Python调用GPT-4V分析图片-Base64编码-多图-JSON结构化输出
开发语言·python·json
龙虾PRO19 小时前
大模型稳定输出 JSON 的四层防线:2026 生产环境落地避坑指南
json
爱奥尼欧1 天前
14.输出解析器-Pydantic与JSON
人工智能·学习·langchain·json
vortex52 天前
composer.json 可写场景下的利用手段
android·json·composer
Ming_studying2 天前
HTML + CSS + JavaScript实现可视化JSON工具:格式化、折叠、搜索与错误定位
javascript·css·html·json·数据可视化·web工具
CappuccinoRose3 天前
JSON 数据交互规范
json·交互
不会代码的小猴4 天前
7. JSON
开发语言·c++·笔记·qt·算法·json