JSON 格式化工具使用教程:格式化、压缩与验证技巧
什么是 JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由 Douglas Crockford 在 2001 年提出并推广。它基于 JavaScript 对象字面量语法,但已成为语言无关的通用标准(RFC 8259)。
为什么 JSON 成为现代 API 的标准格式?
- 可读性好:比 XML 更简洁,人类可直接阅读和理解
- 解析简单:几乎所有编程语言都有原生或高效的 JSON 库
- 体积小:比 XML 省去大量冗余标签
- 类型丰富:支持字符串、数字、布尔值、数组、对象、null
{
"name": "张三",
"age": 28,
"skills": ["Python", "TypeScript", "Go"],
"active": true,
"address": null
}
三种核心功能详解
1. 格式化(Pretty Print)
将压缩或混乱的 JSON 展开为层次清晰、缩进整齐的格式,便于人类阅读。
压缩前:
{"name":"张三","age":28,"skills":["Python","TypeScript"],"address":{"city":"北京","district":"朝阳"}}
格式化后(2 空格缩进):
{
"name": "张三",
"age": 28,
"skills": [
"Python",
"TypeScript"
],
"address": {
"city": "北京",
"district": "朝阳"
}
}
在线工具支持选择缩进方式:2 空格、4 空格或 Tab,根据团队规范选择即可。
2. 压缩(Minify)
移除所有不必要的空白字符(空格、换行、缩进),将 JSON 压缩为单行,减小传输体积。
- 适用场景:API 响应体、嵌入 HTML 的配置数据、CDN 缓存的静态 JSON 文件
- 体积节省:复杂 JSON 通常可减少 20%~40% 的字节数
- 注意:压缩后不适合人工阅读,调试时请先格式化
3. 验证(Validate)
检测 JSON 的语法是否合法,并定位错误所在行号和列号。
当 JSON 存在语法错误时,工具会高亮显示错误位置,例如:
Error: Unexpected token '}' at line 5, column 3
Expected ',' or ']' after array element
常见 JSON 语法错误及修复
开发中最频繁出现的 JSON 错误:
❌ 属性名必须用双引号
// 错误:单引号或不加引号
{ name: "张三" }
{ 'name': "张三" }
// 正确
{ "name": "张三" }
❌ 尾随逗号不允许
// 错误:最后一个元素后有逗号
{
"name": "张三",
"age": 28,
}
// 正确
{
"name": "张三",
"age": 28
}
❌ 不支持注释
// 错误:JSON 不支持任何形式的注释
{
// 用户信息
"name": "张三",
/* "age": 28 */
}
// 正确:移除所有注释
{
"name": "张三"
}
❌ 不允许单引号字符串
// 错误
{ "name": '张三' }
// 正确
{ "name": "张三" }
❌ 特殊值的写法
// 错误:布尔值和 null 必须小写
{ "active": True, "data": NULL, "value": Undefined }
// 正确
{ "active": true, "data": null }
常见错误速查表
| 错误现象 | 原因 | 修复方法 |
|---|---|---|
| Unexpected token ' | 尾随逗号 | 删除最后一个逗号 |
| Unexpected string | 属性名未加双引号 | 给所有键名加双引号 |
| Unexpected token '#' | 包含注释 | 删除所有注释 |
| Unexpected end of JSON | JSON 不完整 | 检查括号是否匹配 |
| Circular reference | 循环引用对象 | 重构数据结构 |
在线工具使用步骤
访问 MagicTools JSON 工具,操作流程如下:
- 粘贴 JSON:将 API 响应或配置文件内容粘贴到左侧编辑区
- 自动验证:工具实时检测语法,错误行会红色高亮标注
- 选择操作:
- 点击「格式化」展开为可读格式
- 点击「压缩」转为单行紧凑格式
- 查看结果:右侧面板展示处理结果,支持语法高亮
- 复制输出:点击「复制」按钮,或直接下载为
.json文件
实战场景
API 调试
从浏览器 Network 面板复制响应体,粘贴到 JSON 格式化工具:
- 快速定位嵌套层级,找到需要的字段
- 验证 API 返回结构是否符合预期
配置文件检查
package.json、tsconfig.json、appsettings.json 等配置文件若有语法错误,会导致工具链崩溃。修改后用验证工具提前检测。
日志分析
后端以 JSON 格式输出的结构化日志,格式化后便于排查问题字段。
JSONPath 查询简介
当 JSON 结构复杂时,可用 JSONPath 快速提取数据,类似 XPath 之于 XML。
// 原始 JSON
{
"store": {
"books": [
{ "title": "深入理解计算机系统", "price": 89 },
{ "title": "Clean Code", "price": 59 }
]
}
}
// JSONPath 查询示例
$.store.books[0].title // → "深入理解计算机系统"
$.store.books[*].price // → [89, 59]
$.store.books[?(@.price < 70)] // → 价格低于70的书
命令行工具 jq 是处理 JSON 的利器:
# 格式化
cat data.json | jq '.'
# 提取字段
cat data.json | jq '.store.books[0].title'
# 过滤
cat data.json | jq '.store.books[] | select(.price < 70)'
常见问题 FAQ
Q:JSON 和 JavaScript 对象有什么区别?
A:有几个关键差异:① JSON 的键必须用双引号,JS 对象可以不加引号;② JSON 不支持函数、undefined、Symbol 等 JS 特有值;③ JSON 不支持注释;④ JSON 数字不允许前导零。JSON.stringify() 可将 JS 对象序列化为 JSON,JSON.parse() 则相反。
Q:JSON5 是什么?与 JSON 有什么关系?
A:JSON5 是 JSON 的超集扩展,放宽了一些限制:支持单引号字符串、允许尾随逗号、支持注释、允许键名不加引号。主要用于配置文件场景(如 .eslintrc、Babel 配置)。但 JSON5 不是标准 JSON,API 通信仍应使用标准 JSON。
Q:如何处理超大型 JSON 文件(几百 MB)?
A:浏览器在线工具不适合处理超大文件,推荐:① 命令行 jq 工具,流式处理任意大小文件;② Python ijson 库,逐条解析避免内存溢出;③ 数据库工具(MySQL、PostgreSQL 均支持 JSON 字段查询)。
Q:JSON 支持日期时间类型吗?
A:JSON 规范本身没有日期类型。通常的做法是:用 ISO 8601 格式字符串(如 "2026-03-18T10:00:00Z")表示日期,或用 Unix 时间戳数字。接收方按约定解析。
Q:JSON 如何处理中文字符?
A:JSON 规范要求使用 UTF-8 编码,中文字符完全支持,可直接包含在字符串中。也可以用 Unicode 转义:"\u4e2d\u6587" 等同于 "中文"。现代工具和语言库均默认支持中文,无需特殊处理。
小结
JSON 格式化工具是每位开发者的必备利器,掌握三个核心操作:
- 格式化:API 调试和代码审查时,让结构一目了然
- 压缩:生产部署时减小传输体积,提升性能
- 验证:修改配置或构建 API 请求时,提前发现语法错误
遇到 JSON 问题,牢记最常见的四类错误:单引号、尾随逗号、注释、不匹配的括号。MagicTools JSON 工具 提供实时验证和一键操作,让 JSON 处理更高效。