文本与数据 约 1 分钟阅读 中英文双版本

JSON 格式错误怎么找:看懂报错位置

格式化 JSON 本身很简单。困难的是文件无法解析时,一条指向某个位置的报错,却常常不是真正出错的地方;真正的错误往往在它前面几个字符。

报错位置只是线索,不是结论

解析器报告的是它再也无法继续的位置,而这常常紧跟在真正的错误后面。新键前面少一个逗号,却会报在新键上;右括号前多一个逗号,却会报在右括号上。把报错那一行和它上一行放在一起看。

最常见的原因是尾部多余逗号、用单引号代替双引号、从文档里一起粘进来的注释,以及没有加引号的键名。这些都属于语法问题,而不是数据内容,修好它们不需要改动任何值。

语法错误和数据错误要用不同办法修

文件能解析之后,剩下的问题都属于含义层面:本该是数字却存成字符串、日期格式前后不一、一百条记录里有一条缺少字段。这些问题不会报错,所以「格式化成功」绝不等于「内容正确」。

一个有效的检查,是把格式化结果和使用方期望的结构比对。缺少的必填字段即便括号都对齐,到了下游依然会失败。

压缩格式要按用途保留

带缩进的 JSON 用于阅读和审查,紧凑的 JSON 用于传输或存储。不要提交一份只和原文件差在空格和缩进上的改动,也不要给接口发送这种版本。每种用途选定一种形式,验证通过之前保留原文件。

如果文件大到难以流畅阅读,缩进格式化反而会让处理更慢。先统计行数和字节数,只有在一清二楚的结构下才拆分出合法的片段来处理。

稳妥的处理顺序

  • 把原文粘贴到副本里,不要直接修改唯一的版本
  • 按项目约定的缩进风格格式化
  • 如果失败,检查报错所在行以及它上一行
  • 检查是否混入 JSON 不允许的注释和单引号
  • 解析通过后,再核对键名和值类型是否符合预期结构
  • 只有确认目标需要紧凑格式时,才重新压缩

直接试用