极简工具箱

免费在线工具 · 本地计算 · 无需上传

JSON 怎么格式化与校验

接口返回一大坨压缩过的 JSON、配置文件里少了个逗号、前后端对不上字段——这些场景几乎每个开发者都遇到过。本文讲清格式化在做什么、报错怎么定位,以及几类最容易踩的语法坑。

广告位(百度联盟)

一、格式化到底做了什么

JSON 是一种纯文本数据格式,压缩后的 JSON 把所有空白、换行都去掉了,机器读起来没问题,人读起来很痛苦。格式化(美化 / pretty print)就是按层级重新插入缩进和换行,让对象和数组的结构一目了然;压缩(minify)则相反,去掉所有非必要空白以减小传输体积。两者都不会改变数据本身,只改变文本的排版。

需要注意:格式化不是「修复」。如果文本本身不是合法 JSON,任何格式化工具都只会告诉你哪里错了,而不会擅自帮你改对。所以「格式化」和「校验」通常是同一个动作的两面:能解析成功就输出美化结果,解析失败就报告错误位置。

二、六类最常见的语法错误

三、如何按行列定位报错

浏览器里 JSON.parse() 抛出的错误通常带有 position(字符偏移量)或 line/column 信息。定位方法是:把报错位置之前的文本截取出来,数出换行符个数得到行号,再用最后一个换行符之后的字符数得到列号。好的在线工具会直接把这一步算好,并高亮出错附近的内容。

// 浏览器控制台示例
try { JSON.parse(txt); }
catch (e) { console.log(e.message); }
// Unexpected token } in JSON at position 137

经验法则:报错在「某个字符」时,问题往往在它前面一两个字符——比如多了一个逗号、少了一个引号,解析器要读到下一个 token 才发现不对。

四、实际操作建议

把原始文本粘贴进 JSON 格式化校验工具,先点「校验 / 格式化」,如果报错就按提示的行列回到原文修改;改完再点「压缩」得到可贴回代码或请求体里的单行版本。整个过程在浏览器本地完成,接口数据、token 之类的敏感内容不会上传到任何服务器,这一点对调试生产环境的返回尤其重要。

如果需要把接口返回的数组整理成表格给运营看,可以用 JSON 与 CSV 互转;要对比两个版本接口差异,用 JSON 比对比肉眼逐行看可靠得多。

五、大文件与编码注意

几 MB 以上的 JSON 在浏览器里美化会明显占内存,建议先按外层数组切片、或直接用命令行 jq 处理。另外 JSON 文本应以 UTF-8 保存,含中文时不要转成 GBK,否则会出现乱码;\uXXXX 形式的转义是合法的,格式化工具一般会保留原样或还原成可读字符。

小结

记住三句话:格式化只改排版不改数据;校验失败先看报错位置前一个字符;含敏感数据的接口结果用本地工具处理,不要贴到第三方在线服务。掌握这三点,绝大多数 JSON 报错都能在几分钟内解决。

本文相关工具(本地计算,无需上传)

更多使用教程