JSON 解析报错大全:常见的 10 种错误及修复方法(附在线演示)
2024-09-12
接口联调或读配置文件时,JSON.parse 往往只抛一行英文报错。本文按常见程度整理了 10 种典型错误:每种给出「错误示例 → 原因 → 正确写法」,并说明如何用本站工具定位行号、验证修复结果。
1. 键名或字符串使用了单引号
JSON 规范要求键名与字符串值都必须使用双引号。JavaScript 对象字面量允许单引号,但 JSON 不允许。
常见报错:Unexpected token ' in JSON at position … 或类似提示。
{
name: "Alice",
"age": 30
}{
"name": "Alice",
"age": 30
}2. 尾随逗号(Trailing comma)
对象最后一个属性或数组最后一个元素后面不能有多余逗号。部分编辑器会自动插入尾随逗号,复制到严格 JSON 解析器时会失败。
ES2019 之后的 JavaScript 数组/对象字面量允许尾随逗号,但 JSON 标准始终不允许。
{
"items": [1, 2, 3,],
"tags": ["a", "b",]
}{
"items": [1, 2, 3],
"tags": ["a", "b"]
}3. 键名未加双引号
所有键名必须是带双引号的字符串。{ active: true } 在 JS 中合法,在 JSON 中非法。
{
active: true,
"score": 95
}4. 缺少逗号或多了逗号
相邻键值对之间必须用逗号分隔;多写逗号会导致 Unexpected token 报错。
{
"a": 1
"b": 2
}{
"a": 1,, "b": 2
}5. 字符串中反斜杠未正确转义
Windows 路径中的 \ 在 JSON 字符串里必须写成 \\。单个反斜杠后跟非法转义字符会触发 Bad escaped character。
{
"path": "C:\Users\data"
}{
"path": "C:\\Users\\data"
}6. 使用了 NaN、Infinity、undefined
JSON 只支持 null 表示空值,不支持 JavaScript 的 NaN、Infinity、undefined。需要时用 null 或字符串 "NaN" 等替代。
{
"value": NaN
}7. 包含注释
JSON 不支持 // 或 /* */ 注释。若数据来自带注释的配置文件,需先删除注释再解析。
文档示例、VS Code 的 JSONC、或 JSON5 格式允许注释——它们不能直接用 JSON.parse;交换数据时仍应产出标准 JSON。
{
// user profile
"name": "Bob"
}8. 顶层出现多个值或未闭合括号
合法 JSON 顶层只能是单个对象或单个数组。拼接了两段 JSON、漏写 } 或 ] 时,常见 Unexpected end of JSON input 或 Expected ',' or '}'。
检查括号是否成对、是否误删了结尾的闭合符号。
9. 数字格式不合法
不允许前导零(如 007)、不允许十六进制(0xFF)、小数点前后不能为空。
科学计数法 1.5e10 是合法的;单独一个点 . 不是合法数字。
10. 控制字符未转义
字符串内的换行、制表符等控制字符必须写成 \n、\t 等转义序列,不能直接换行。
从日志或邮件正文复制 JSON 时,最容易带入未转义的换行符。
在线演示:如何快速定位错误行
打开本站 JSON 工具,粘贴报错文本。校验失败时,侧边栏显示错误信息与行号,编辑器同步高亮对应行。
按上文修复后再次点击「格式化」或「压缩」,显示成功即表示 JSON 已合法。