理解 JSON 最好的方式就是读例子。本指南从最基础开始走一遍 JSON 格式 —— 简单对象、嵌套结构、数组、混合类型 —— 然后展示你在 API、配置文件、数据库里会遇到的真实 JSON 模式。每个例子都是合法、可复制粘贴的 JSON。
把它们当成测试、fixture 或文档里的示例 json 文件 来用 —— 下面每个片段都是真实可用的 JSON 例子,可以直接存成 .json 后缀的文件加载。
最简单的 JSON 例子
任何一个合法的 JSON 值都是完整的 JSON 文档。最简单的 JSON 文档是基本类型:
"hello" // 字符串
42 // 数字
true // 布尔
null // null在实践里,你遇到的几乎每个 JSON 文档要么是对象要么是数组。
JSON 对象例子
一个 JSON 对象是一组键-值对。键必须是双引号包起来的字符串。值可以是任何 JSON 类型。
{
"id": 42,
"name": "Alice Chen",
"email": "alice@example.com",
"age": 30,
"active": true,
"score": 98.6,
"nickname": null
}注意:JSON 对象里键的顺序是不保证的 —— 解析器可能以任意顺序返回。
JSON 数组例子
JSON 数组是一个有序的值列表。元素可以是不同类型,顺序始终保留。
// 字符串数组
["apple", "banana", "cherry"]
// 数字数组
[1, 2, 3, 4, 5]
// 混合类型
[42, "hello", true, null, { "key": "value" }]
// 对象数组(API 响应里常见)
[
{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" },
{ "id": 3, "name": "Carol" }
]嵌套的 JSON 例子
对象和数组可以嵌套到任意深度。JSON 的表达力就来自这里。
{
"user": {
"id": 1001,
"name": "Alice Chen",
"address": {
"street": "123 Main St",
"city": "San Francisco",
"state": "CA",
"zip": "94102"
},
"tags": ["premium", "early-adopter"],
"preferences": {
"notifications": {
"email": true,
"sms": false,
"push": true
},
"theme": "dark"
}
}
}JSON 格式例子:REST API 响应
一个典型的分页 API 响应大概长这样:
{
"status": "success",
"data": {
"page": 1,
"per_page": 10,
"total": 47,
"total_pages": 5,
"items": [
{
"id": "prod_001",
"name": "Wireless Headphones",
"price": 89.99,
"currency": "USD",
"in_stock": true,
"categories": ["electronics", "audio"],
"rating": 4.7,
"reviews_count": 2341
},
{
"id": "prod_002",
"name": "USB-C Hub",
"price": 39.99,
"currency": "USD",
"in_stock": false,
"categories": ["electronics", "accessories"],
"rating": 4.2,
"reviews_count": 891
}
]
},
"meta": {
"request_id": "req_8f3a2c",
"timestamp": "2024-10-15T14:32:00Z"
}
}JSON 配置文件例子
JSON 格式的配置文件在 JavaScript 工具链里很常见。下面是典型的 package.json 结构:
{
"name": "my-app",
"version": "1.0.0",
"description": "A sample application",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "jest",
"build": "tsc"
},
"dependencies": {
"express": "^4.18.2",
"lodash": "^4.17.21"
},
"devDependencies": {
"typescript": "^5.0.0",
"jest": "^29.0.0"
},
"engines": {
"node": ">=18.0.0"
}
}JSON 数据格式:日期和时间
JSON 没有原生的日期类型。日期用字符串表示。ISO 8601 是被普遍接受的格式:
{
"created_at": "2024-10-15T14:32:00Z", // UTC 日期时间
"updated_at": "2024-10-15T14:32:00+08:00", // 带时区偏移
"birth_date": "1990-06-21", // 仅日期
"meeting_time": "09:00:00" // 仅时间
}也有些系统直接用数字形式的 Unix 时间戳(从纪元起的秒数):
{
"created_at": 1728999120,
"expires_at": 1761057600
}带可选字段和 null 字段的 JSON
字段存在但没有值用 null。可选且确实不存在的字段就整个省略。
{
"id": 5,
"name": "Bob",
"email": "bob@example.com",
"phone": null, // 存在但未设置
"company": "Acme Corp",
"title": null // 存在但未设置
// "fax" 整个 省略 —— 这条根本不适用
}JSON 错误例子(以及怎么修)
这些是常见的 JSON 写法错误:
// ❌ 单引号(不是合法 JSON)
{ 'name': 'Alice' }
// ✅ 修:改用双引号
{ "name": "Alice" }
// ❌ 键没引号
{ name: "Alice" }
// ✅ 修:给键加引号
{ "name": "Alice" }
// ❌ 末尾多了逗号
{ "a": 1, "b": 2, }
// ✅ 修:删掉末尾逗号
{ "a": 1, "b": 2 }
// ❌ JavaScript 注释
{ "debug": true // 打开 logging }
// ✅ 修:删掉注释
{ "debug": true }
// ❌ Python 风格的布尔
{ "active": True }
// ✅ 修:用小写
{ "active": true }如果你的 JSON 字符串里有以上任何错误,贴到 JSON Fix 就能自动修复并格式化。
JSON Lines(NDJSON、jsonlines)例子
流式日志、ML 数据集和批量 API 的惯例是一行一个 JSON 值,用 \n 分隔。这个格式有两个名字 —— jsonlines(来自 jsonlines.org)和 NDJSON —— 但规范一样:
{"event":"login","user":"ada","at":"2026-05-28T09:00:00Z"}
{"event":"view","user":"ada","page":"/dashboard"}
{"event":"logout","user":"ada","at":"2026-05-28T09:42:00Z"} 每一行独立解析。不要对整个文件做 JSON.parse() —— 按换行切,逐行解析。
OpenAPI 响应例子
OpenAPI 规范用 JSON Schema 风格定义响应:
{
"openapi": "3.1.0",
"paths": {
"/users/{id}": {
"get": {
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["id", "email"],
"properties": {
"id": { "type": "integer" },
"email": { "type": "string", "format": "email" }
}
}
}
}
}
}
}
}
}
}仅日期和仅时间的例子
ISO 8601 也定义了纯日期和纯时间的形式 —— 当一天里的具体时间或者具体日期没什么意义时很有用:
{
"birth_date": "1815-12-10", // 仅日期
"office_hours": "09:00:00", // 仅时间
"started_at": "2026-05-28T09:00:00Z" // 完整日期时间,对比用
}GeoJSON 例子
GeoJSON 是基于 JSON 的地理数据标准格式:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-122.4194, 37.7749]
},
"properties": {
"name": "San Francisco",
"country": "US",
"population": 873965
}
}常见问题
什么是合法 JSON 的例子?
最简单的就是一个基本类型,比如 42 或 "hello",不过大多数实际的 JSON 是对象,比如 { "name": "Alice", "age": 30, "active": true },或者是这种对象组成的数组。
JSON 里日期怎么表示?
JSON 没有日期类型。日期以字符串保存 —— 通常用 ISO 8601("2024-10-15T14:32:00Z"),或者用数字形式的 Unix 时间戳。
JSON 里怎么表示缺失值?
字段存在但没有值用 null;根本不适用的字段直接把键省略。JSON 没有 undefined。
嵌套的 JSON 长什么样?
对象和数组可以无限层次地包含其他对象和数组 —— 见上面的嵌套示例和 REST API 示例。底层规则请见 什么是 JSON?
试一下这些例子
把上面任何一个例子复制下来,贴到下面的工具里探索数据:
- JSON Fix —— 格式化、校验、修复 JSON
- JSON Diff —— 并排比较两个 JSON 示例
- 什么是 JSON? —— 六种数据类型和 JSON 文法的完整指南
- 如何格式化 JSON —— 在 JavaScript、Python、jq 和浏览器里 pretty-print JSON
- JSON Stringify —— 把 JSON 值转成转义后的字符串字面量