返回博客
json 2025-02-15

理解 JSON:开发者完整指南

深入了解 JSON 格式、其历史、高级使用模式和现代开发最佳实践。

JSON(JavaScript Object Notation)已成为 Web 数据交换的通用语言。虽然最初源自 JavaScript,但它已超越其起源,成为几乎所有编程语言和平台中最广泛使用的数据格式。

JSON 的历史

JSON 由 Douglas Crockford 在 2000 年代初期首次规范。尽管源自 JavaScript,JSON 是一种语言无关的格式。它在 2013 年被标准化为 ECMA-404,后来在 2017 年成为 RFC 8259。在 JSON 之前,XML 是主要的数据交换格式,但 JSON 的简单性和可读性使其迅速成为首选。

JSON 数据类型详解

字符串

JSON 中的字符串必须用双引号括起来。支持 Unicode 字符和转义序列:

{

"greeting": "你好,世界!",

"unicode": "\u0048\u0065\u006C\u006C\u006F",

"escaped": "第1行\n第2行\t制表符"

}

数字

JSON 数字可以是整数或浮点数。也支持科学记数法:

{

"integer": 42,

"negative": -17,

"float": 3.14159,

"scientific": 2.998e8

}

高级 JSON 模式

JSON Schema

JSON Schema 是用于注释和验证 JSON 文档的词汇:

{

"$schema": "https://json-schema.org/draft/2020-12/schema",

"type": "object",

"properties": {

"name": {"type": "string", "minLength": 1},

"age": {"type": "integer", "minimum": 0}

},

"required": ["name"]

}

JSON Patch (RFC 6902)

JSON Patch 定义了描述 JSON 文档更改的格式。

性能考虑

  • 解析速度:由于结构更简单,JSON 解析通常比 XML 解析更快
  • 文件大小:JSON 通常比等效的 XML 小 30-50%
  • 流处理:对于大型数据集,考虑使用 JSON Lines(JSONL)格式
  • 压缩:JSON 使用 gzip 压缩效果很好,通常可以减少 70-90% 的大小

常见陷阱

1. 不允许注释:与 JavaScript 不同,JSON 不支持注释

2. 不允许尾随逗号:对象或数组中的最后一个元素不能有尾随逗号

3. 键必须是字符串:JSON 键必须是带引号的字符串

4. 没有 undefined:JSON 有 null 但没有 undefined

5. 日期处理:JSON 没有原生日期类型;日期通常存储为 ISO 8601 字符串

现代开发中的 JSON

JSON 在现代开发中无处不在:

  • REST API:请求和响应体的标准格式
  • 配置文件:package.json、tsconfig.json 等
  • NoSQL 数据库:MongoDB 使用 BSON(Binary JSON)存储数据
  • WebSocket:实时通信经常使用 JSON 消息
  • GraphQL:响应始终为 JSON 格式

使用我们的 JSON 格式化工具即时验证、格式化和压缩您的 JSON 数据。