JSON 语法错误常见原因与修复对照表

JSON 解析失败时程序报出的英文提示往往看不懂。这里整理了 12 种最常见的错误写法:报错信息、错误示例、修复方法一一对应。查不到答案时,可把内容粘贴进 免费在线 JSON 校验工具,直接指出出错的行列(本地处理,不上传)。

一、引号类错误(最高频)

1. 键或字符串值没有加引号

报错 Unexpected token a in JSON… / A string key must be followed by ':'

{name: "张三", age: 20}
{"name": "张三", "age": 20}

JSON 的键和字符串值都必须用英文双引号包裹,这与 JavaScript 对象字面量不同。

2. 用了单引号

报错 Unexpected token '

{'name': '张三'}
{"name": "张三"}

3. 用了中文全角引号「”“」

从聊天工具、Word 里复制内容时最容易带入全角引号,肉眼很难分辨。

{“name”: “张三”}
{"name": "张三"}

二、逗号类错误

4. 尾随逗号(最后一个成员后多一个逗号)

报错 Unexpected token } in JSON at position …

{"list": [1, 2, 3,], "a": 1,}
{"list": [1, 2, 3], "a": 1}

手写或从 JS 代码复制时很常见:JS 允许尾随逗号,JSON 不允许。

5. 成员之间漏了逗号

报错 Expected ',' or '}' after property value

{"a": 1 "b": 2}
{"a": 1, "b": 2}

三、括号与结构错误

6. 括号不匹配 / 文本被截断

报错 Unexpected end of JSON input

{"a": [1, 2
{"a": [1, 2]}

常见于复制不完整、接口返回被截断、日志行太长被编辑器截掉尾部。

7. 数组里用冒号、对象里用等号

{"users": [{"id" = 1}]}
{"users": [{"id": 1}]}

四、值格式错误

8. 数字写前导零或加号

报错 JSON number numbers may not start with 0

{"port": 08080, "n": +5}
{"port": 8080, "n": 5}

9. 使用单引号布尔/空值或 Python 风格写法

Python 的 True/False/None、JS 的 undefined 都不是合法 JSON 值。

{"ok": True, "x": undefined, "y": None}
{"ok": true, "y": null}

10. 出现注释

报错 Unexpected token / in JSON…

{
  // 端口号
  "port": 8080
}
{"port": 8080}

JSON 标准不支持注释。若确实需要注释,请改用 JSONC / YAML / TOML,并确认读取端支持。

五、转义与编码错误

11. 字符串里有裸换行 / 未转义双引号

报错 Bad control character in string literal

{"msg": "第一行
第二行,他说"你好""}
{"msg": "第一行\n第二行,他说\"你好\""}

换行要写成 \n,引号要 \\" 转义,反斜杠本身要写两条 \\\\

12. 文件带 BOM 或隐藏字符

报错 Unexpected token \ufeff in JSON…,内容看起来完全正常却解析失败。

Windows 记事本保存的 UTF-8 文件常带 BOM。用支持「另存为 UTF-8(无 BOM)」的编辑器重存,或粘贴到校验工具里由它指出首字符问题。

通用排查三步法

  1. 定位:把内容粘贴进 JSON 在线校验工具,读取报错的行列位置;
  2. 对照:回到本页按报错信息找对应条目,多数问题是引号、逗号、括号三选一;
  3. 验证:改完再校验一次,通过后若嫌太长可用 JSON 压缩,要阅读用 JSON 格式化

常见问题

JSON 报 unexpected end of JSON input 是什么意思?

文本被截断了:缺少闭合的花括号或方括号,或内容只写入了一半(复制不完整、接口返回中断都常见)。补全结尾的括号即可。

尾随逗号为什么会导致解析失败?

JSON 标准不允许最后一个成员后还有逗号,如 [1,2,3,] 或 {"a":1,}。删掉末尾多余的逗号即可。

配置文件写了注释,怎么让它通过?

JSON 不支持 // 或 /* */ 注释。要么删掉注释,要么改用支持注释的格式(JSONC、YAML、TOML),取决于程序是否接受。

怎么快速找到出错位置?

用本站的在线校验工具,实时解析并标出出错行列;全程在浏览器本地完成,敏感内容不会上传。

相关工具