什么是 JSON?
JSON(JavaScript Object Notation)是当前 Web API 最主流的数据交换格式,占比超过 90%。它基于 ECMA-404 和 RFC 8259 标准,以简洁、易读的键值对结构,成为前后端通信的事实标准。
JSON 基本语法规则
JSON 的语法非常严格,一个合法的 JSON 文档必须遵循以下规则:
- 键名必须使用双引号:
"key"而非key或'key' - 字符串必须使用双引号:
"value"而非'value' - 不允许尾随逗号:最后一个元素后面不能有逗号
- 不支持注释:JSON 本身不支持注释,需要在外部处理
- 必须使用 UTF-8 编码:这是推荐的标准编码方式
JSON 支持的数据类型
- 字符串(String):双引号包裹的 Unicode 字符序列
- 数字(Number):整数或浮点数,无引号包裹
- 布尔值(Boolean):
true或false - 数组(Array):方括号包裹的有序值列表,如
[1, 2, 3] - 对象(Object):花括号包裹的键值对集合,如
{"key": "value"} - null:表示空值
JSON 格式化与验证
为什么需要格式化?
在实际开发中,JSON 数据通常以压缩格式传输(Minified),所有空格和换行都被移除,以减小传输体积。压缩后的 JSON 可减少 30-50% 的传输大小,但完全不可读。格式化工具可以将压缩的 JSON 转换为结构清晰的层级格式,缩进通常使用 2 个空格。
验证的重要性
JSON 解析错误是前端开发中最常见的错误之一。常见的错误包括:
- 多余的逗号
- 缺少引号
- 括号不匹配
- 使用单引号替代双引号
- 不合法的转义字符
使用 JSON 验证工具可以在开发阶段快速定位这些问题,避免运行时错误。
JSON Schema 校验
JSON Schema 是一种强大的数据验证工具,它允许你定义 JSON 数据的结构约束:
- 指定哪些字段是必需的
- 定义字段的类型和格式
- 设置数值范围或字符串长度限制
- 枚举允许的值
- 嵌套对象的验证规则
在 CI/CD 流程中集成 JSON Schema 验证(如使用 ajv 库),可以提前发现 API 数据格式问题。
大 JSON 处理建议
对于超过 100MB 的 JSON 文件,一次性加载到内存可能会导致内存溢出。建议使用流式解析器:
- simdjson:解析速度可达 2.5 GB/s,是目前最快的 JSON 解析库
- ijson(Python):惰性迭代解析,适合处理超大文件
- 使用 JSON 在线工具先验证结构,再在本地用流式方式处理
JSON 安全注意事项
- 永远不要使用
eval()解析 JSON,这会导致代码注入风险 - 使用
JSON.parse()或标准库进行解析 - 警惕原型链污染攻击(
__proto__) - 对不可信的 JSON 数据始终进行验证和清理