常用工具及查询🤖 AI 导航HOT寒霜启示录游戏工具攻略文章关于

JSON 常见报错怎么排查:8 种错误写法与修改方法

作者:冰原老猫 · 发布:2026-10-22 · 分类:工具教程

广告位(预留,AdSense 审核通过后启用)

调接口时控制台弹出 SyntaxError: Unexpected token,改配置文件后程序起不来,日志只说“JSON 解析失败”——这些问题十有八九是 JSON 格式写错了。JSON 规则其实很少,但比 JavaScript 对象严格得多。下面按出现频率整理 8 种常见错误,每种都给出错误写法和正确写法。

先记住 JSON 的六条规则

  1. 最外层通常是对象 {} 或数组 [](标准也允许单个值)。
  2. 键名必须是双引号字符串。
  3. 字符串只能用双引号,内部的双引号和反斜杠要转义。
  4. 值只能是字符串、数字、true、false、null、对象、数组。
  5. 元素之间用逗号分隔,最后一个元素后面不能有逗号。
  6. 不支持注释。

错误 1:末尾多余的逗号

{"name": "冰原", "tags": ["a", "b",]}

JavaScript 允许数组和对象末尾带逗号,JSON 不允许。删除 "b" 后面的逗号即可。这是从代码里复制数据时最常见的错误。

错误 2:单引号

{'name': '冰原'}

Python 的 print(dict) 输出就是单引号格式,看起来像 JSON 但不是。Python 里应该用 json.dumps(data, ensure_ascii=False) 生成真正的 JSON。

错误 3:键名没有引号

{name: "冰原"}

JavaScript 对象字面量可以这样写,JSON 必须写成 {"name": "冰原"}。前端用 JSON.stringify(obj) 生成,就不会出这个问题。

错误 4:带注释

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

标准 JSON 没有注释语法。有些工具(如 VS Code 的配置文件)支持带注释的 JSONC 格式,但普通解析器会报错。需要说明时可以加一个 "_comment" 字段,或者改用 YAML、TOML 这类支持注释的格式。

错误 5:Unexpected end of JSON input

意思是“还没读完就结束了”,常见原因有三个:

前两个原因占绝大多数。前端调用接口时,可以先检查 response.status 和返回内容是否为空,再解析。

错误 6:Unexpected token < in JSON at position 0

第一个字符就是 <,说明拿到的根本不是 JSON,而是一个 HTML 页面——通常是 404 页面、登录页、网关错误页或者 Nginx 的报错页。这时别去改 JSON,应该去查请求地址、登录状态和服务器状态。在浏览器开发者工具的“网络”面板里点开这个请求,看“响应”内容就一目了然。

错误 7:非法值

{"a": undefined, "b": NaN, "c": 0123, "d": .5}

undefined、NaN、Infinity 都不是合法 JSON 值;数字不能有前导零,也不能省略小数点前的 0。改为 null、123、0.5 等合法写法。

错误 8:字符串里有未转义的字符

{"path": "C:\new\data", "msg": "他说"你好""}

反斜杠要写成 \\,字符串中的双引号要写成 \",换行要写成 \n,不能直接在字符串里按回车。Windows 路径是这类错误的高发区,正确写法是 "C:\\new\\data"。

如何快速定位错误位置

不同浏览器、不同语言的报错信息不一样,有的给“position 123”(第几个字符),有的给行号和列号,新版浏览器有时只给一段上下文。几个实用技巧:

  1. 把内容粘到格式化工具里,让它指出具体行和列。
  2. 错误位置往往在报告位置的前面。比如漏了一个逗号,解析器要读到下一个键名时才发现不对。
  3. 内容很长时用“二分法”:删掉一半看是否还报错,逐步缩小范围。
  4. 注意从网页、聊天软件复制来的中文引号 “ ”,它们看起来像双引号,但不是。

大数字精度问题

这不会报错,但更隐蔽:JavaScript 的数字是双精度浮点数,超过 253(约 9007 万亿)的整数会丢精度。比如接口返回订单号 12345678901234567890,前端解析后末尾几位可能变化。解决办法是后端把这类 ID 输出为字符串。

用工具检查

本站的 JSON 格式化 / 压缩 / 校验工具 会在出错时显示第几行第几列,并在出错的那一行下方用 ^ 标出位置;校验通过后可以一键格式化或压缩。所有处理在浏览器本地完成,可以放心粘贴包含内部字段的接口数据。如果数据是 Base64 编码过的,可以先用 Base64 解码 还原后再检查。

广告位(预留,AdSense 审核通过后启用)

相关站内工具

同类文章

← 全部文章