JSON 格式化完全指南
JSON(JavaScript Object Notation)是当今最流行的数据交换格式。无论是前端开发、后端接口调试,还是配置文件编写,JSON 无处不在。本文将从基础到高级,全面介绍 JSON 格式化的知识。
什么是 JSON 格式化?
JSON 格式化(也称 JSON 美化)是将压缩或混乱的 JSON 数据转换为结构清晰、易于阅读的格式的过程。格式化后的 JSON 会添加适当的缩进、换行和空格,使数据层次一目了然。
格式化前:
{"name":"张三","age":28,"skills":["JavaScript","Vue","Node.js"],"address":{"city":"北京","district":"朝阳"}}
格式化后:
{
"name": "张三",
"age": 28,
"skills": [
"JavaScript",
"Vue",
"Node.js"
],
"address": {
"city": "北京",
"district": "朝阳"
}
}
为什么需要格式化 JSON?
1. 提高可读性
压缩的 JSON 在一行内显示所有数据,嵌套层级难以分辨。格式化后通过缩进可以快速理解数据结构。
2. 方便调试
在开发过程中,API 返回的 JSON 数据通常需要格式化后才能有效排查问题。格式化可以帮助你快速定位缺失的字段或错误的值。
3. 代码审查
在 Code Review 时,格式化的 JSON 配置文件更容易审查变更内容。
4. 文档生成
许多 API 文档工具要求 JSON 示例必须是格式化的,以便自动生成可读的文档。
JSON 基础语法
在使用格式化工具之前,了解 JSON 的基本语法规则很重要:
数据类型
| 类型 | 示例 | 说明 |
|---|---|---|
| 字符串 | "hello" |
必须用双引号 |
| 数字 | 42, 3.14 |
整数或浮点数 |
| 布尔值 | true, false |
只有这两个值 |
| null | null |
空值 |
| 数组 | [1, 2, 3] |
有序集合 |
| 对象 | {"key": "value"} |
键值对集合 |
语法规则
- 键名必须用双引号包裹
- 字符串值必须用双引号包裹(不能用单引号)
- 最后一个元素不能有逗号(trailing comma)
- 不支持注释(
//或/* */) - 不支持
undefined、NaN、Infinity
常见 JSON 错误
1. 单引号错误
// ❌ 错误
{'name': '张三'}
// ✅ 正确
{"name": "张三"}
2. 多余逗号
// ❌ 错误
{"name": "张三", "age": 28,}
// ✅ 正确
{"name": "张三", "age": 28}
3. 键名未加引号
// ❌ 错误
{name: "张三"}
// ✅ 正确
{"name": "张三"}
4. 注释
// ❌ 错误(JSON 不支持注释)
{
"name": "张三" // 用户姓名
}
// ✅ 正确
{
"name": "张三"
}
JSON 格式化方法
方法一:在线工具
使用 jsjson.com JSON 格式化工具,只需粘贴 JSON 数据即可一键格式化。优势:
- 无需安装任何软件
- 支持语法高亮和错误提示
- 支持压缩和格式化双向转换
- 纯前端处理,数据不上传服务器
方法二:编辑器插件
主流代码编辑器都支持 JSON 格式化:
- VS Code:右键 → Format Document,或快捷键
Shift + Alt + F - WebStorm:Code → Reformat Code,或快捷键
Ctrl + Alt + L - Sublime Text:安装 Pretty JSON 插件
方法三:命令行
# 使用 Python
echo '{"name":"张三","age":28}' | python -m json.tool
# 使用 jq
echo '{"name":"张三","age":28}' | jq .
# 使用 Node.js
echo '{"name":"张三","age":28}' | node -e "process.stdin.on('data',d=>console.log(JSON.stringify(JSON.parse(d),null,2)))"
方法四:代码实现
JavaScript:
const formatted = JSON.stringify(obj, null, 2)
Python:
import json
formatted = json.dumps(obj, indent=2, ensure_ascii=False)
Java:
ObjectMapper mapper = new ObjectMapper();
String formatted = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
JSON 压缩
与格式化相反,JSON 压缩是去除所有不必要的空格和换行,最小化数据体积。
压缩前(格式化):
{
"name": "张三",
"age": 28
}
压缩后:
{"name":"张三","age":28}
压缩 JSON 的常见场景:
- API 响应传输(减少带宽)
- LocalStorage 存储(节省空间)
- 网络传输优化
JSON 校验
JSON 校验是检查 JSON 数据是否符合语法规范的过程。常见的校验内容:
- 语法正确性 - 是否符合 JSON 语法规则
- 数据类型 - 值的类型是否正确
- 必填字段 - 是否缺少必要字段
- 格式规范 - 如日期格式、邮箱格式等
可以使用 jsjson.com JSON 校验工具 快速检查 JSON 语法错误,精确定位错误位置。
最佳实践
1. 使用标准缩进
推荐使用 2 个空格作为缩进,这是大多数项目和工具的默认配置。
2. 保持一致性
在同一项目中,所有 JSON 文件应使用统一的格式化风格。
3. 编码规范
- 使用 UTF-8 编码
- 键名使用 camelCase 或 snake_case(保持统一)
- 避免使用特殊字符作为键名
4. 版本控制
格式化后的 JSON 在 Git diff 中更容易查看变更,建议在提交前格式化 JSON 文件。
5. 自动化
配置 ESLint、Prettier 等工具自动格式化 JSON 文件,避免手动格式化的不一致性。
常见问题
Q: JSON 和 JavaScript 对象有什么区别?
A: JSON 是一种数据格式,而 JavaScript 对象是编程语言的数据结构。JSON 要求键名必须用双引号、不支持注释、不支持 undefined 和函数。
Q: JSON 支持注释吗?
A: 标准 JSON 不支持注释。如果需要注释,可以使用 JSONC(JSON with Comments)或 JSON5 格式。
Q: JSON 中的数字精度有问题怎么办?
A: 超过 Number.MAX_SAFE_INTEGER(2^53 - 1)的整数会丢失精度。解决方案是将大数字作为字符串传输,在使用时再转换。
Q: 如何处理 JSON 中的中文乱码?
A: 确保使用 UTF-8 编码。在代码中序列化时,Python 需要设置 ensure_ascii=False,Java 需要配置 SerializationFeature。
Q: 格式化会改变 JSON 数据吗?
A: 不会。格式化只添加空格和换行,不会修改任何数据值。压缩同理,只去除空白字符。
总结
JSON 格式化是每个开发者的日常操作。选择合适的工具和方法可以显著提高开发效率。推荐使用 jsjson.com 的在线 JSON 工具,纯前端处理保障数据安全,支持格式化、压缩、校验等多种功能。
本文最后更新于 2026 年 5 月