
什么是 JSON?
JSON(JavaScript Object Notation)是一种轻量级、人类可读的数据交换格式。源自 JavaScript 对象字面量语法,JSON 已成为 Web 上数据交换的通用标准,用于 REST API、配置文件和数据存储。
JSON 支持六种数据类型:字符串、数字、布尔值(true/false)、null、数组和对象。其简洁性和可读性使其成为 XML 的主要替代方案。
JSON 语法规则
JSON 有严格的语法要求,与 JavaScript 不同:
- 键必须是字符串,用双引号括起来:
"key": "value"(而不是key: "value") - 字符串仅使用双引号 - 不能使用单引号
- 没有尾随逗号:
{"a": 1, "b": 2}有效,但{"a": 1, "b": 2,}无效 - 没有注释:JSON 不支持
//或/* */注释 - 数字不能有前导零:
100有效,0100无效 - 特殊值:
true、false、null(小写)
常见 JSON 错误
语法错误:意外标记
通常表示尾随逗号、缺少逗号或未加引号的键:
错误: {"name": "John", "age": 30,} <- 尾随逗号
正确: {"name": "John", "age": 30}
错误: {name: "John"} <- 未加引号的键
正确: {"name": "John"}
意外的控制字符
字符串内未转义的特殊字符:
错误: {"path": "C:\Users\name"} <- 反斜杠未转义
正确: {"path": "C:\\Users\\name"} <- 转义反斜杠
错误: {"text": "line 1
line 2"} <- 未转义换行符
正确: {"text": "line 1\nline 2"} <- 转义换行符
未闭合的括号或花括号
缺少闭合的 } 或 ]:
错误: [{"id": 1}, {"id": 2] <- 缺少 }
正确: [{"id": 1}, {"id": 2}]
JSON 格式化级别
压缩 JSON(单行,无空白):
{"users":[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]}
最佳用途:API 响应、数据传输(体积更小)。
美化打印 JSON(缩进,人类可读):
{
"users": [
{
"id": 1,
"name": "Alice"
},
{
"id": 2,
"name": "Bob"
}
]
}
最佳用途:配置文件、调试、文档。
JSON 实践
在 JavaScript 中解析 JSON
// 解析(字符串转对象)
const data = JSON.parse('{"name": "Alice", "age": 30}');
console.log(data.name); // "Alice"
// 序列化(对象转字符串)
const json = JSON.stringify({ name: "Alice", age: 30 });
// '{"name":"Alice","age":30}'
// 美化打印(2 空格缩进)
const pretty = JSON.stringify(data, null, 2);
JSON Schema 验证
JSON Schema 定义了 JSON 数据的预期结构、类型和约束:
{
"type": "object",
"properties": {
"name": { "type": "string", "minLength": 1 },
"age": { "type": "number", "minimum": 0 }
},
"required": ["name"]
}
处理大型 JSON 文件
对于大型 JSON 文件(>100MB),流式解析器避免将整个文件加载到内存中:
- Node.js:
stream-json包 - Python:
ijson包
JSON 与其他格式对比
| 格式 | 注释 | 二进制 | 模式 | 用例 |
|---|---|---|---|---|
| JSON | 否 | 否 | JSON Schema | Web API、配置 |
| YAML | 是 | 否 | 是 | 配置文件、DevOps |
| TOML | 是 | 否 | 有限 | 应用程序配置 |
| XML | 是 | 否 | XSD | 企业、文档 |
| MessagePack | 不适用 | 是 | 否 | 性能关键场景 |
| Protocol Buffers | 不适用 | 是 | 是 | 高性能 API |
使用此工具
粘贴任何 JSON 文本即可立即验证并检测错误,显示具体的行号和列号。该工具可美化打印有效 JSON,支持可配置缩进(2 空格、4 空格或制表符),并高亮显示任何语法错误。
-> 尝试 JSON 格式化与验证工具