JSON 语法错误怎么定位:从报错行列到具体字符
JSON 报错之所以难查,是因为浏览器自带的报错只说「某个位置有意外字符」,不给上下文。可靠的定位要同时给出三样:中文原因、行号列号、原文里那一处的位置指示。按这个顺序看,绝大多数语法错误三十秒内能改完。
五类最常见的语法错误
- 尾逗号:
{"a":1,}。JSON 不允许最后一个成员后面还有逗号,这是从 JavaScript 对象字面量带过来的习惯。 - 单引号:
{'a':1}。JSON 的键和字符串必须用双引号。 - 未加引号的键:
{a:1}。JavaScript 允许,JSON 不允许。 - 注释:
// 说明或/* */。JSON 标准里没有注释,这是 jsonc 才有的扩展。 - 换行未转义:字符串里直接敲了回车。字符串内的换行必须写成
\n。
这五类占了实际报错的绝大部分,而且都出现在"看起来很像 JavaScript"的地方——因为写 JSON 的人多半刚从 JS 对象切过来。
行号列号怎么用
报错位置指的是解析器读不下去的那个字符,不一定就是错误本身。典型情况:少了一个右括号,解析器会一直读到文件末尾才报错,此时行列号指向末尾而不是缺失处。
实用技巧:报错在末尾,问题在开头。遇到行列号落在最后几行时,从文件开头重新数括号——用编辑器的括号匹配功能逐层核对,比盯着末尾看有效得多。
校验通过不等于数据正确
JSON 校验只检查语法:括号是否配对、引号是否闭合、逗号位置是否正确。它不检查字段名有没有拼错、类型对不对、必填项在不在——那些属于 Schema 校验,是另一件事。
所以「校验通过」只说明这段文本能被任何 JSON 解析器读出来。业务字段是否正确,需要在拿到对象之后自己判断。
校验失败时输入不会丢
任何失败场景下输入框内容都原样保留,不会因为一次解析失败清空。改完再点校验即可,可以反复试。
整个校验在浏览器里完成,页面不发出任何携带数据的网络请求,断网也能用。涉及密钥、手机号、订单信息的 JSON 可以放心贴。
上面这些都不用装软件,也不用注册:打开页面就能用。
打开 JSON 在线解析 →常见问题
报错说「意外的 <」是什么意思?
通常是把 HTML 页面当成了 JSON——比如接口返回了 404 页面或登录页。先把返回内容完整看一遍,确认拿到的是 JSON 而不是错误页或重定向后的 HTML。
为什么本地看着没问题,解析还是失败?
常见原因是不可见字符:从网页或文档复制时混进的零宽空格、全角引号、全角逗号。这些字符肉眼与半角几乎一样,但 JSON 解析器一律不认。用编辑器的「显示不可见字符」功能排查。
能校验 JSON5 或带注释的配置吗?
不能。这个工具严格按 JSON 标准校验,注释、单引号、尾逗号都会被判为错误。JSON5 / jsonc 需要专门的解析器。