JSON 的含义与入门示例
JSON 是 JavaScript Object Notation(JavaScript 对象表示法)的缩写。它由 Douglas Crockford 在 2000 年代初期推广开来,语法借鉴自 JavaScript,并已标准化为 RFC 8259 和 ECMA-404。尽管名字里带有 JavaScript,JSON 却不依赖于任何编程语言:几乎所有语言都能读写 JSON。
下面是一个描述人物的简单 JSON 文档:
{"name": "Ada Lovelace", "born": 1815, "languages": ["English", "French"], "mathematician": true, "spouse": null}
JSON 数据类型
| 类型 | 示例 | 说明 |
|---|---|---|
| 字符串 | "Hello" | 用双引号括起的文本,可包含 \n 等转义 |
| 数字 | 42、-3.14、6.02e23 | 不支持 NaN、Infinity、十六进制或前导零 |
| 布尔值 | true、false | 始终小写 |
| 空值 | null | 表示空值或未知值 |
| 对象 | {"key": "value"} | 名称/值对;名称为字符串 |
| 数组 | [1, 2, 3] | 由任意类型的值组成的有序列表 |
JSON 没有日期类型:日期通常写成 ISO 8601 格式的字符串,例如 "2026-05-01T10:00:00Z"。
JSON 格式:语法规则
- 数据以名称/值对的形式书写:
"name": "Ada"。 - 名称(键)和字符串始终使用双引号,绝不能用单引号。
- 各项之间用逗号分隔,最后一项后面不能有逗号。
- 花括号
{ }表示对象,方括号[ ]表示数组。 - 不允许使用注释。
- 各项之间的空格和换行会被忽略,因此同样的数据既可以压缩,也可以格式化。
- 一段 JSON 文本只包含一个顶层值,并使用 UTF-8 编码。
JSON 文件是什么?
JSON 文件是扩展名为 .json 的纯文本文件,其中包含一个 JSON 文档。它的媒体类型是 application/json,应以 UTF-8 编码保存。常见的 JSON 文件包括应用和网站导出的数据(例如 Google Takeout 或社交媒体的数据下载)、package.json 等配置文件、保存到本地的 API 响应,以及用于分析的数据集。由于 JSON 文件是纯文本,打开它是安全的,它无法执行任何代码。
JSON 文件怎么打开
| 平台 | 打开方法 |
|---|---|
| Windows | 右键单击文件 → 打开方式 → 记事本,或使用 VS Code 等代码编辑器。把文件拖进浏览器窗口也能查看。 |
| Mac | 用“文本编辑”或代码编辑器打开,或将其拖到浏览器窗口中。 |
| iPhone 和 Android | 在“文件”App 中用文本查看器打开,或将其加载到在线 JSON 查看器中。我们的查看器支持手机,文件始终保留在你的设备上。 |
| 网页浏览器 | Firefox 内置了 JSON 查看器;在任何浏览器中,在线 JSON 查看器都能以可折叠的树形结构显示数据。 |
| Excel | 在 Windows 上使用数据 → 获取数据 → 来自文件 → 从 JSON,或先用 JSON 转 CSV 工具转换文件。 |
JSON 与 XML 对比
| JSON | XML | |
|---|---|---|
| 语法 | 花括号、方括号、名称/值对 | 开始标签和结束标签 |
| 数据类型 | 字符串、数字、布尔值、null、对象、数组 | 仅有文本,除非由 Schema 定义类型 |
| 体积 | 紧凑 | 因结束标签而更大 |
| 注释 | 不支持 | 支持 |
| 属性、命名空间 | 不支持 | 支持 |
| 典型用途 | Web API、配置文件、NoSQL 数据库 | 文档、办公文件、SOAP 和企业系统 |
API 和应用程序中的 JSON
大多数 Web API 都使用 JSON 发送和接收数据。客户端发送带有 Content-Type: application/json 请求头的请求,服务器返回 JSON,程序再将其转换为原生对象:JavaScript 中使用 JSON.parse,Python 中使用 json.loads,PHP 中使用 json_decode。JSON 还广泛用于 package.json 和 tsconfig.json 等配置文件、MongoDB 等文档数据库,以及 AI 模型的结构化输出。
常见的 JSON 错误
- 最后一项后面多了逗号:
[1, 2,] - 使用单引号或键名未加引号:
{'a': 1}、{a: 1} // note这样的注释- 各项之间缺少逗号或括号
undefined、NaN或True等 JavaScript 或 Python 的值
将数据粘贴到 JSON 校验工具中,即可看到问题所在的确切行和列,也可以使用“修复”功能自动修正。
JSON5、JSONC 和 JSON Lines
- JSON5:为手写文件设计的更宽松的超集,支持注释、尾随逗号、单引号、不加引号的键和十六进制数字。标准 JSON 解析器无法读取。
- JSONC:带注释的 JSON,用于 VS Code 设置和
tsconfig.json。 - JSON Lines / NDJSON(
.jsonl):每行一个 JSON 值,非常适合日志和大型数据集的流式处理。 - GeoJSON:用于描述地理要素的 JSON,由 RFC 7946 定义。
常见问题
JSON 是编程语言吗?
不是。JSON 是一种数据格式:它只用来描述数据,不能包含逻辑、函数或注释。
JSON 和 JavaScript 对象是一回事吗?
不是。JSON 是一种看起来像 JavaScript 对象字面量的文本,但规则更严格:键和字符串必须使用双引号,不允许出现函数、undefined 和注释。JSON.parse 可以把这段文本转换为真正的对象。
如何创建 JSON 文件?
在任意文本编辑器中按照上述规则编写数据,然后以 UTF-8 编码保存为扩展名为 .json 的文件。使用前,请先用 JSON 校验工具检查一下。
最后更新: