常见问题
压缩和转义有什么区别?
压缩只去掉空白和换行,结果仍是 JSON;转义是把整段 JSON 变成能塞进字符串字面量的形式,引号会被转义。
压缩会丢数据吗?
空白本身无意义,去掉不影响解析。但这里是「解析后重新序列化」,所以 1.0 会变成 1、1e3 变成 1000、重复键只留最后一个,超过 2^53 的整数(18 位以上的 ID)会按双精度近似 —— 这类字段请确认原本就是字符串。
一般能压掉多少体积?
取决于原文本的缩进量。4 空格缩进的接口响应通常能压掉 30% 以上。
关于这个工具
五个动作(压缩 / 格式化 / 转义 / 反转义 / 校验)都先做一次 JSON.parse,所以「压缩」不是删空白,而是解析后重新序列化。这个区别有实际后果:1.0 会变成 1、1e3 变成 1000、\u00e9 会变成字符 é、重复键只留最后一个,超过 253(9007199254740992)的整数会按双精度近似 —— 18–19 位的雪花 ID、订单号会变成另一串数字。压这类数据前先确认字段本来就是字符串。
「转义」产出的是能直接塞进代码字符串字面量的一行文本:先压成单行,再把 \ 和 " 分别转成 \\ 与 \"。如果输入本身不是合法 JSON,它会退一步只把换行压成空格再转义、不报错 —— 这个降级是有意的(方便把半成品文本塞进字符串),但也意味着「转义成功」不等于「JSON 合法」。
「反转义」只还原 \" 和 \\ 两种,\n、\t、\uXXXX 都原样保留 —— 它面向的是「从代码里抠出来的转义字符串」,不是完整的 JSON 字符串解码。要真正解码 \u,粘到「Unicode 转换」或格式化工具里解析一次即可。
压缩后状态栏给出原始字节、结果字节和省下的百分比。缩进越深省得越多,2 空格大概一成到两成;已经压缩过的内容再压基本不变(百分比接近 0 就说明体积不在空白上),想再小只能改结构,不是这个工具的事。