一张表对号入座
| 你要做什么 | 怎么做 | 用这个 |
|---|---|---|
| 接口返回的 JSON 挤成一团,看不清结构 | 一键美化,按对象/数组层级缩进对齐,嵌套再深也能一眼看清 | JSON 格式化 |
| 改完 JSON 心里没底,不知道能不能解析 | 先校验语法,出错会精确提示第几行第几个字符附近有问题 | JSON 格式化 |
| 传输或存储前想给 JSON 瘦身 | 压缩:去掉所有多余空白和换行,内容完全等价,体积通常小 30%-60% | JSON 格式化 |
| 中文变成了 \u4e2d 这样的字符 | 这是 Unicode 转义,内容没坏;点「反转义」即可还原成正常中文 | JSON 格式化 |
| 要把数据导进 Excel 里分析 | 二维数组转成 CSV 表格,直接拿 Excel 或 WPS 打开 | JSON / CSV 互转 |
先认识 JSON:六种类型和三条铁律
JSON 只有六种数据类型
对象({})、数组([])、字符串、数字、布尔值(true/false)、null——就这些,没有第七种。接口里看到的时间、金额、ID,本质都是字符串或数字。搞清类型就能看懂任意一份 JSON 的结构。
键必须用双引号
{"a":1} 合法,{a:1} 和 {'a':1} 都不合法。这是 JSON 与 JavaScript 对象字面量最容易踩的差别,因为后两种写法在 JS 里都能跑。
不支持注释
// 和 /* */ 在 JS 里随便写,但 JSON 里一律不行。要写说明就单独加一个 "_comment" 字段,或者放到数据外面。
不认识 NaN 和 undefined
这两个是 JavaScript 的概念,JSON 没有。序列化时它们会变成 null 或直接被丢掉,看到字段「莫名消失」先想想这个。
为什么你的 JSON 老是报错
十有八九是下面五个原因之一,逐个对照能省掉大部分调试时间:
- 尾逗号:{"a":1,}——最后一个键值对后面多了一个逗号,JavaScript 允许,JSON 不允许。
- 单引号:{'a':1}——字符串和键都必须用双引号。
- 注释:复制配置时把 // 备注一起带进来了,JSON 不支持注释。
- 键没加引号:{a:1} 是从 JS 对象直接粘过来的,JSON 里键必须是字符串。
- 用了 NaN / undefined:JSON 没有这两个值,序列化时会变成 null 或被丢弃。
拿不准哪一行出的问题,把文本粘进JSON 格式化点「校验」,错误会精确提示第几行第几个字符附近,比肉眼逐行扫快得多。
格式化和压缩怎么选
同一份数据有两种形态,内容完全等价,用途相反:
- 格式化(美化):加缩进和换行,给人看——调试接口、读日志、写文档都用它。
- 压缩:去掉所有多余空白,给机器传——接口之间传输、存配置前瘦身,体积通常能小 30%-60%。
三条实用建议
- 接口数据先校验再使用:拿到响应当场过一遍校验,比运行到一半崩在 JSON.parse 上好定位。
- 压缩只用于传输,落盘保留格式化版本:出了问题能直接打开看结构。
- 敏感数据只用本地工具:含 token、用户信息的响应别粘到陌生网站,本站工具全部在浏览器里跑,断网也能用。
常见问题
JSON 和 JS 对象有什么区别?
JSON 是纯数据格式:键必须双引号、不能写注释、不能放函数和 undefined;JS 对象是语言里的结构,写法宽松得多。两者用 JSON.parse(文本转对象)和 JSON.stringify(对象转文本)互相转换。
格式化后中文变成 \u4e2d 这样的字符,是坏了吗?
没坏。这是 Unicode 转义,与中文完全等价,很多接口和编辑器为了兼容性默认转义。在工具里点「反转义」就能还原成正常中文;反过来要转义也可以先格式化再交给接口。
JSON 文件很大,几十 MB 打不开怎么办?
浏览器处理超大文本会明显卡顿,建议单次不超过 5MB。更大的数据建议用 jq 这类命令行工具,先按需截取片段再格式化,不要整个文件硬扛。
数据会上传到服务器吗?
不会。格式化、压缩、校验全部在你的浏览器里完成,断网也能用。含 token、用户信息的接口数据可以放心处理,不必担心经过第三方服务器。
配着站内工具一起用
调试接口还会顺手用到这几个本地工具:时间戳转换(秒/毫秒与日期互转)、JSON / CSV 互转(数据导进 Excel)、文本差异对比(比对两份配置)、UUID 生成器。