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 已合法。