JSON 是现代 Web 开发中最常见的数据交换格式,但哪怕少一个引号、多一个逗号,都会导致整个解析失败。本文总结了开发者最常遇到的 10 种 JSON 语法错误,配合 jsjson.com 在线 JSON 校验工具,帮你快速定位并修复问题。
📋 为什么 JSON 语法错误如此常见
JSON 规范虽然简单,但对格式要求极为严格。以下场景几乎每个开发者都经历过:
- API 调试时:后端返回的 JSON 无法被前端解析,报
Unexpected token错误 - 配置文件编写:
package.json、tsconfig.json等配置文件格式错误导致工具无法启动 - 数据传输:手动拼接的 JSON 字符串在某些边界情况下出错
与 JavaScript 对象字面量不同,JSON 不允许注释、不支持尾逗号、键名必须用双引号。这些细微差异经常导致开发者踩坑。
🔧 10 种常见 JSON 语法错误详解
1. 使用单引号代替双引号
这是从 JavaScript 过渡到 JSON 时最容易犯的错误。
// ❌ 错误
{ 'name': 'jsjson', 'type': 'tool' }
// ✅ 正确
{ "name": "jsjson", "type": "tool" }
JSON 规范要求所有字符串(包括键名)必须使用双引号 "。
2. 多余的尾逗号
JavaScript 允许尾逗号,但 JSON 严格禁止。
// ❌ 错误
{
"name": "jsjson",
"version": "1.0",
}
// ✅ 正确
{
"name": "jsjson",
"version": "1.0"
}
3. 键名未加引号
// ❌ 错误
{ name: "jsjson" }
// ✅ 正确
{ "name": "jsjson" }
4. 注释混入 JSON
JSON 不支持任何形式的注释。
// ❌ 错误 — 包含了注释
{
// 用户名称
"name": "jsjson",
/* 工具类型 */
"type": "tool"
}
// ✅ 正确
{
"name": "jsjson",
"type": "tool"
}
5. 字符串中未转义的特殊字符
// ❌ 错误 — 包含未转义的换行和引号
{ "desc": "这是一个"工具"网站" }
// ✅ 正确 — 使用转义字符
{ "desc": "这是一个\"工具\"网站" }
常见的需要转义的字符包括:\" \\ \/ \b \f \n \r \t,以及 Unicode 字符 \uXXXX。
6. 数字格式不规范
// ❌ 错误
{ "value": 01, "price": .5, "amount": +10 }
// ✅ 正确
{ "value": 1, "price": 0.5, "amount": 10 }
JSON 中数字不能以 0 开头(除了 0 本身和小数)、不能以 . 开头、不能带正号 +。
7. 括号不匹配
嵌套层级深的 JSON 容易出现括号不匹配的问题。
// ❌ 错误 — 少了一个 }
{
"user": {
"name": "jsjson",
"settings": {
"theme": "dark"
}
"status": "active"
}
// ✅ 正确
{
"user": {
"name": "jsjson",
"settings": {
"theme": "dark"
}
},
"status": "active"
}
8. 使用了非法数据类型
JSON 只支持 string、number、object、array、boolean(true/false)和 null。
// ❌ 错误
{ "date": undefined, "pattern": /regex/, "value": NaN }
// ✅ 正确 — 使用 JSON 兼容的值
{ "date": null, "pattern": "regex", "value": null }
9. 数组或对象中多余的逗号或缺少逗号
// ❌ 错误 — 缺少逗号
{ "a": 1 "b": 2 }
// ❌ 错误 — 多余逗号
[1, 2, 3,]
// ✅ 正确
{ "a": 1, "b": 2 }
[1, 2, 3]
10. 编码问题导致的不可见字符
从网页复制粘贴的 JSON 可能包含零宽空格(\u200B)、BOM 标记等不可见字符,导致解析失败。这类错误肉眼很难发现,需要借助工具排查。
💡 使用 jsjson.com 在线校验 JSON
手动排查 JSON 错误费时费力,使用 jsjson.com JSON 校验工具 可以一键检测所有问题:
- 粘贴 JSON 内容:将待校验的 JSON 文本粘贴到输入框
- 点击校验按钮:工具会自动检测语法错误
- 查看错误详情:精确定位到错误所在的行号和列号,显示具体错误原因
- 快速修复:根据提示修正后再次校验,直到通过
对于格式混乱的 JSON,还可以先用 JSON 格式化工具 美化后再校验,这样更容易发现结构问题。
🔗 实用技巧:JSON 调试工作流
从 API 响应中提取 JSON
当 API 返回的 JSON 包含在 HTTP 响应体中,可能前后带有额外内容。先确认响应头 Content-Type 为 application/json,然后提取纯 JSON 部分进行校验。
批量校验 JSON 文件
如果你有多个 JSON 配置文件需要校验,可以逐个粘贴到 JSON 校验工具 中检查,也可以使用 JSON 格式化工具的压缩/美化功能间接验证格式正确性。
JSON 与 JavaScript 对象互转
将 JavaScript 对象转为 JSON 时,使用 JSON.stringify(obj, null, 2) 生成格式化的 JSON 字符串,再粘贴到校验工具中确认无误。反之使用 JSON.parse() 解析时,务必先校验格式。
❓ 常见问题 FAQ
JSON 校验和 JSON 格式化有什么区别?
JSON 校验专注于检测语法错误,告诉你 JSON 是否合法以及错误位置。JSON 格式化则是在 JSON 合法的前提下美化排版。建议先校验确认无误,再格式化美化。两个工具配合使用效果最佳。
如何校验超大 JSON 文件?
jsjson.com 的 JSON 校验工具在浏览器本地运行,不会上传数据到服务器,保护你的数据隐私。对于超大文件,建议先用 JSON 压缩工具 去除多余空格,减少体积后再校验。
JSON5 和标准 JSON 有什么区别?
JSON5 是 JSON 的扩展,支持注释、尾逗号、单引号等特性,但不是标准 JSON。如果你需要与标准系统交互,务必使用标准 JSON 格式。
为什么 JavaScript 中 {} 和 [] 都是合法的,但 JSON 中有时报错?
在 JavaScript 中,{} 可以是空对象,也可以是空代码块。[] 是空数组。在 JSON 中,{} 和 [] 都是合法的。报错通常是因为 JSON 外层结构不对,比如直接写了 {key: value} 而不是 {"key": "value"}。
🔗 相关工具推荐
- JSON 格式化工具 — 美化和压缩 JSON,支持语法高亮
- JSON 压缩工具 — 一键去除 JSON 中的空白和换行
- JS/HTML 格式化工具 — 格式化 JavaScript 和 HTML 代码