前端调接口,控制台甩出一行 Unexpected token in JSON,十有八九是返回的数据本身不合法。json格式验证这事方法不难,难的是知道到底错在哪。

最常见的几种语法错误

  • 键名或字符串值用了单引号,比如 {name:'tom'},JSON 只认双引号,校验必挂。
  • 数组或对象最后一项后面多了个逗号,手滑高发区。
  • 往数据里写注释,JSON 标准不支持注释。
  • 混进了全角引号、全角冒号、制表符这类不可见或形近字符。
  • 数字带了前导零或者写成 0x 开头,部分解析器直接拒收。

用什么工具验

VS Code 把文件存成 .json,语法错误直接画红线,位置都给你标出来,多数情况够用。浏览器 F12 的控制台也能当场验,把数据粘进去回车,报错直接显示。命令行可以用 python -m json.tool 文件名,报错带行号。几 MB 的大文件别贴网页工具,卡半天还可能被截断,本地命令行更稳。

代码里怎么验

浏览器和 Node 环境直接 JSON.parse,包一层 try catch 捕获异常就行,比拿正则去判断靠谱得多。后端语言也都有现成方案,Python 的 json.loads、Java 的 Jackson,解析失败抛异常,抓住就能定位。要做成流程就上 JSON Schema,不只验语法,字段类型、必填项一起验;把校验命令挂进流水线,每次构建自动跑一遍,坏数据进不了仓库。

绕不开的编码问题

文件用 UTF-8 编码最省心,从 Excel 或老系统导出的数据经常带 BOM 头,部分解析器会直接报错,转存成 UTF-8 无 BOM 就好。中文被转成转义序列是合法写法,校验不通过时别误判成乱码问题。

排查小窍门:把报错行附近的文本贴进编辑器,打开显示不可见字符,八成能看见多余的逗号或全角引号。拿不准就把可疑片段二分删减,删到不报错为止,最后删掉的就是元凶。中文标点混进 JSON 是新手报错的重灾区,输入法切换不及时就中招。