如果你写过接口、调过 API、改过配置文件,大概率见过 JSON。它长得像一串挤在一起的符号,人也看不懂,机器却能准确解析。这篇文章讲清楚三件事:JSON 是什么、什么时候该格式化、格式出错时怎么查。
JSON 全称 JavaScript Object Notation(JavaScript 对象表示法),是一种用纯文本描述数据的格式。它只有两种基本结构:
{} 包起来的一组"键值对",键必须是字符串[] 包起来的一串值,有先后顺序这两种结构可以互相嵌套,理论上能描述任何层级的数据。一个典型的 JSON 长这样:
{"name":"张三","age":28,"skills":["Java","Python"]}
它和 Python 的字典、Java 的 Map 表达的是同一类东西。区别在于 JSON 是一种跨语言的通用格式——不管你的后端是 Java、Go 还是 Python,都能输出 JSON,前端都能读。
接口返回的 JSON 通常被压缩成一整行,因为这样体积最小、传输最快。对机器友好,对人极不友好:嵌套三层以后,你根本分不清哪个括号对应哪个。
格式化(也叫美化、pretty print)就是给它加上换行和缩进,让层级结构一目了然:
{
"name": "张三",
"age": 28,
"skills": [
"Java",
"Python"
]
}
两者的数据完全相同,只是排版不同。判断依据很简单:
| 场景 | 建议格式 |
|---|---|
| 接口传输、存数据库 | 压缩(省流量、省空间) |
| 看日志、调试接口 | 美化(看得清楚) |
| 写配置文件 | 美化(方便人工修改) |
| 提交到代码仓库 | 美化(diff 更清晰) |
整个过程在你的浏览器里完成,数据不会上传到任何服务器。接口返回的敏感数据(token、手机号等)可以放心粘贴。
工具在解析失败时会直接告诉你出错位置。下面是几种最常见的语法错误:
JSON 不允许最后一个元素后面有逗号,这一点和 JavaScript 对象不同:
{"a": 1, "b": 2,} ← 报错:多出的逗号
{"a": 1, "b": 2} ← 正确
JSON 的键必须是带双引号的字符串,不能像 JS 那样省略:
{name: "张三"} ← 报错
{"name": "张三"} ← 正确
JSON 只认双引号。这是从 Python 转过来最常犯的错:
{'name': '张三'} ← 报错
{"name": "张三"} ← 正确
JSON 标准不支持注释。写配置时想加说明,只能换个字段名,或者改用 JSON5 / YAML 这类衍生格式:
{"port": 8080 // 服务端口} ← 报错
{"port": 8080} ← 正确
从 Word、微信、文档里复制代码时,双引号常被自动替换成中文的 ""。肉眼看不出差别,解析必然失败。这是最难查的一类错误——建议一律先把内容粘贴到纯文本编辑器再过一遍。