JSON格式化与验证完全指南:从入门到排错实战
JSON 是什么?为什么格式化如此重要?
JSON(JavaScript Object Notation)是现代数据交换的标准格式,几乎无处不在:
- API 响应:绝大多数 Web API 返回 JSON
- 配置文件:package.json、tsconfig.json 等
- 数据存储:NoSQL 数据库、本地存储
- 消息传递:微服务间通信
但原始 JSON 往往是压缩在一行的,可读性极差:
{"name":"张三","age":28,"address":{"city":"北京","district":"海淀"},"skills":["JavaScript","TypeScript","React"],"projects":[{"name":"工具库","url":"https://www.toolsku.com"}]}
格式化后清晰可读:
{
"name": "张三",
"age": 28,
"address": {
"city": "北京",
"district": "海淀"
},
"skills": [
"JavaScript",
"TypeScript",
"React"
],
"projects": [
{
"name": "工具库",
"url": "https://www.toolsku.com"
}
]
}
使用工具库格式化 JSON
基本操作
- 打开 JSON格式化工具
- 粘贴或输入 JSON 文本
- 自动格式化并显示结果
- 如有语法错误,会标注错误位置和原因
进阶功能
- 缩进设置:2 空格、4 空格或 Tab 缩进
- 排序键名:按键名字母排序,方便对比
- 压缩/美化切换:一键在压缩和美化间切换
- 语法高亮:不同类型值用不同颜色显示
常见 JSON 错误及排查
错误 1:尾逗号(Trailing Comma)
{
"name": "张三",
"age": 28, ← 这里多了逗号
}
修复:删除最后一个属性后的逗号。标准 JSON 不允许尾逗号。
错误 2:单引号代替双引号
{
'name': '张三' ← JSON 必须用双引号
}
修复:所有字符串用双引号包裹。
错误 3:注释
{
// 这是注释 ← JSON 不支持注释
"name": "张三"
}
修复:删除注释,或使用 JSONC 格式(VS Code 支持)。工具库的格式化工具会自动忽略注释。
错误 4:未转义的特殊字符
{
"text": "第一行
第二行" ← 换行符必须转义为 \n
}
修复:换行用 \n,制表符用 \t,反斜杠用 \\。
错误 5:非字符串键名
{
name: "张三" ← 键名必须用双引号包裹
}
修复:键名加双引号:"name": "张三"。
JSON 与其他格式互转
JSON ↔ YAML
YAML 更适合人类编写配置文件,JSON 更适合机器解析:
# YAML 格式
name: 张三
age: 28
skills:
- JavaScript
- TypeScript
使用 JSON与YAML互转工具 一键转换。
JSON ↔ TOML
TOML 是 Rust 生态常用的配置格式:
# TOML 格式
name = "张三"
age = 28
skills = ["JavaScript", "TypeScript"]
使用 JSON与TOML互转工具 一键转换。
JSON ↔ CSV
适合将 API 返回的 JSON 数据转为表格格式:
使用 JSON与CSV互转工具 一键转换。
JSON 高级操作
JSONPath 查询
从复杂 JSON 中提取特定数据:
JSON: { "users": [{"name": "张三", "age": 28}, {"name": "李四", "age": 32}] }
JSONPath: $.users[?(@.age > 30)].name
结果: ["李四"]
使用 JSONPath查询工具 执行查询。
JSON Diff 对比
对比两个 JSON 的差异,适合:
- 对比 API 请求和响应
- 检查配置变更
- 测试数据对比
使用 JSON对比工具 可视化差异。
JSON 生成代码类型
从 JSON 自动生成 TypeScript/Go/Java/SQL 类型定义:
{ "name": "张三", "age": 28 }
生成 TypeScript:
interface Root {
name: string;
age: number;
}
使用 JSON转TypeScript工具、JSON转Go工具 等。
常见问题
JSON 文件太大无法格式化?
工具库的 JSON 格式化在浏览器本地运行,不受服务器限制。即使几十 MB 的 JSON 文件也能处理。
如何验证 JSON 是否符合特定结构?
先格式化确认语法正确,再使用 JSONPath 查询验证关键字段是否存在。
JSON 和 JSON5 有什么区别?
JSON5 是 JSON 的超集,支持注释、尾逗号、单引号等。工具库格式化工具兼容 JSON5 语法。
总结
JSON 处理是开发者的日常必备技能。工具库提供完整的 JSON 工具链:格式化、YAML互转、TOML互转、CSV互转、JSONPath查询、对比、生成类型,全部在浏览器本地处理,安全高效。