JSON 格式化把挤成一团的 JSON 重新排好版:粘贴进去、选好缩进,原本密密麻麻的一长串立刻变成层层分明的结构,一眼就能看清哪个键套着哪个值。它也能反过来把 JSON 压成一行,方便塞进代码、环境变量或命令行参数;还能只做语法校验,JSON 不合法时直接告诉你错在第几行第几个字符、大概是什么原因。所有处理都在你的浏览器里完成,接口返回的敏感数据可以放心粘。
它处理的是标准 JSON(RFC 8259 那一套):对象、数组、字符串、数字、布尔和 null 都认,双引号、逗号、括号的规矩也严格照搬。所以带注释的 JSON5、带尾逗号的配置文件,在它这里会直接报错——这不是它坏了,而是那些写法本就不属于标准 JSON。下面把格式化、压缩、校验、转义这几件事分别讲清楚,也说清它做不到什么。
格式化:缩进到底选哪个
格式化就是给 JSON 重新排版。工具会把每个层级按你选的缩进量往里缩:2 空格最通用,几乎所有的编辑器、Git diff 和代码规范都认它;4 空格更松散,层级多时看得更清楚;Tab 适合习惯用制表符的团队。选哪个不影响内容,只影响观感,同一份 JSON 换缩进不会改变任何键值。接口调试时看到一坨压缩 JSON,先用 2 空格格式化一遍,结构立刻清楚,找某个字段也不用再拿括号一个个去对。
压缩:为什么要把 JSON 压成一行
压缩是格式化的反向操作:把缩进、换行和多余空格全部去掉,只留最小的合法 JSON。它的用处是把数据塞进容量有限或不允许换行的地方——写进环境变量的值、塞进命令行参数、放进一行配置,或者传给只收单行输入的接口。压完体积会明显变小,但可读性也没了,所以通常的做法是:调试时用格式化版看清楚,真要嵌进代码或配置时再压成一行。
校验:出错时它会告诉你错在哪
校验不改变内容,只回答一个问题——这段是不是合法 JSON。合法就给出顶层类型,比如是对象还是数组、有多少个键或元素;不合法就指出出错位置和原因,例如「第 3 行第 15 个字符附近 Unexpected token」,并附上出错处前后的一小段内容,方便你直接定位。最常见的三类错误是:多写或少写了逗号、用了单引号而不是双引号、对象或数组的括号没有配对。有了行列号和上下文,通常几秒就能改对。
转义与去转义:JSON 里嵌 JSON 时用
有时你需要把一段 JSON 当成字符串塞进另一段 JSON 里,这时里层的引号和换行都必须转义,写成 \" 和 \n 的形式,直接手改很容易漏。转义功能就是帮你自动加上这些反斜杠;去转义则反过来,把 \uXXXX、\n、\" 这些还原成真正的字符。需要提醒的是,转义只处理字符串层面的符号,它不会改变数据的含义,也不会把非法 JSON 变合法——如果原文本身语法就有问题,先去校验那一步修好再来。
使用边界:不做 Schema、不认注释、不转格式
先把边界讲清楚。第一,它不做 JSON Schema 校验:它只检查语法是否合法,不会核对「这个字段该不该是数字」「这个值有没有超出你的约定范围」——字段类型是否符合你的业务规则,它管不了。第二,它只认严格 JSON,不支持 JSON5 / JSONC 的注释和尾逗号,这类文件粘进来会直接报错,需要先去注释、去尾逗号。第三,它不做与 YAML、XML、CSV 的互相转换,只处理 JSON 本身。第四,输入超过 5MB 时会直接提示先拆分——此时不解析、不输出,以免卡住浏览器。
用起来要注意的几个小地方
一是别指望它顺手改内容:它只调整空白,键的顺序、字符串内容都原样保留,不会帮你排序或去重。二是数字精度要留意,像 1.10 这种写法格式化后可能变成 1.1,因为 JSON 的数字没有「保留几位小数」的概念,要保留末尾零得存成字符串。三是复制走的结果已经是纯文本,粘到哪里都不会带格式。四是它全程在本地跑,不联网也能用,但本地处理不等于内容安全,敏感数据该脱敏还是要脱敏。
参考资料
常见问题
格式化会改动我的数据吗?
不会。格式化只调整缩进和换行这些空白字符,键值内容、数字、字符串都保持原样,不会增删字段,也不会给数组排序。
为什么我的配置文件粘进去报错?
多半是里面带了注释或尾逗号。标准 JSON 不允许注释和多余的逗号,如果用的是 JSON5 / JSONC 格式,需要先去掉注释和尾逗号再校验。