JSON 是什么
JSON(JavaScript Object Notation)是轻量级数据交换格式。前后端通信、配置文件、API 响应都用 JSON。结构清晰、人可读、机器可解析,是现代开发的事实标准。
JSON 语法规则
数据类型
- 字符串:双引号包裹,如 "hello"
- 数字:整数或浮点,如 42、3.14
- 布尔:true 或 false
- 空值:null
- 数组:方括号包裹,如 [1, 2, 3]
- 对象:花括号包裹,键值对,如 {"name": "Tom"}
- 嵌套:对象和数组可互相嵌套
基本规则
- 键必须用双引号(不是单引号)
- 字符串必须用双引号
- 不能有尾随逗号(最后一个元素后不能有逗号)
- 不能有注释
- 顶层只能是对象或数组
格式化的三个需求
校验
检查 JSON 语法是否正确。少个逗号、多个逗号、引号不匹配都会导致解析失败。
美化(Pretty Print)
把压缩成一行的 JSON 展开成带缩进的多行格式,方便人读。
压缩形态:
{"name":"Tom","age":20,"tags":["a","b"]}
美化为:
{
"name": "Tom",
"age": 20,
"tags": ["a", "b"]
}
压缩(Minify)
把美化格式去掉所有空格换行,压缩成一行,减少体积。用于传输和存储。
常见 JSON 错误
引号错误
- 用了单引号:JSON 只允许双引号
- 忘记闭合引号
- 键名没用引号
错误:{'name': 'Tom'}(单引号) 正确:{"name": "Tom"}
逗号错误
- 尾随逗号:最后一个元素后多了逗号
- 漏逗号:元素间忘记逗号
错误:{"a": 1, "b": 2,}(尾随逗号) 正确:{"a": 1, "b": 2}
数据类型错误
- 用了 undefined(JSON 没有 undefined,用 null)
- 用了 NaN / Infinity(JSON 不支持)
- 函数、日期对象不能直接序列化
转义错误
字符串里的特殊字符要转义:
- 引号:"
- 反斜杠:\
- 换行:\n
- 制表符:\t
- 回车:\r
错误:"He said "hello""(引号没转义) 正确:"He said "hello""
编码错误
JSON 必须用 UTF-8 编码。其他编码可能导致中文乱码或解析失败。
嵌套与层级
嵌套示例
{
"user": {
"name": "Tom",
"address": {
"city": "北京",
"zip": "100000"
}
},
"orders": [
{"id": 1, "items": ["A", "B"]},
{"id": 2, "items": ["C"]}
]
}
缩进
- 2 空格缩进:最常用
- 4 空格缩进:更宽松
- Tab 缩进:部分团队用
美化时统一缩进风格。
深层嵌套
超过 5 层嵌套阅读困难。考虑拍平结构或拆分。
JSON 与其他格式
JSON vs JSONL
- JSON:整个文件一个 JSON(通常是对象或数组)
- JSONL(JSON Lines):每行一个独立 JSON,适合日志和流式数据
JSON vs JSON5
JSON5 是 JSON 超集,支持:
- 单引号
- 尾随逗号
- 注释
- 十六进制数字
但 JSON5 不是标准 JSON,解析器兼容性有限。
JSON vs YAML
- JSON:严格语法,机器友好
- YAML:宽松语法(支持注释、缩进表示层级),人友好
- 配置文件常用 YAML,API 传输用 JSON
JSON vs XML
- JSON:轻量,无标签开销
- XML:标签冗长,但支持属性和命名空间
- 现代开发 JSON 已基本取代 XML
实用技巧
复制 JSON
从 API 响应或日志里复制 JSON,粘到格式化工具美化,方便阅读。
调试 JSON
接口返回报错,把响应 JSON 格式化后检查字段是否正确。
配置文件
配置文件用 JSON 写,格式化后注释每个字段含义(注意标准 JSON 不支持注释,用 JSONC 或单独文档)。
数据转换
CSV 转 JSON、XML 转 JSON 等场景,转换后格式化校验结果。
用 CSV 转 JSON 工具 一键转换表格数据为 JSON。
格式化工具用法
校验
粘贴 JSON,工具检查语法。有错会指出错误位置和原因。
美化
粘贴压缩 JSON,选择缩进,点击美化,输出多行格式。
压缩
粘贴美化 JSON,点击压缩,输出单行。
转义
把 JSON 字符串里的特殊字符转义,或反向还原。
用 DocsAll 处理 JSON
JSON 涉及编码和转换,可用相关工具:
- 编码解码工具:处理 JSON 字符串转义
- CSV 转 JSON 工具:表格转 JSON
浏览器端处理,数据不上传。
常见问题
格式化后中文变 \uXXXX
部分工具默认转义中文。需要显示中文原文,关闭 Unicode 转义选项。
大 JSON 卡顿
超大 JSON(几 MB)格式化可能卡。用命令行工具(如 jq)处理更高效。
注释怎么办
标准 JSON 不支持注释。需要注释用 JSONC、JSON5 或 YAML。
小结
JSON 格式化核心三件事:校验语法、美化可读、压缩传输。常见错误是引号、逗号、转义。处理 JSON 用 DocsAll 编码解码工具 和 CSV 转 JSON 工具,浏览器端运行,数据不外传。