阅读完本节后,你将会收获:
- 理解 JSON 和 YAML 的语法和用途
- 掌握两种格式的读写方法
- 了解它们在开发中的应用场景
- 理解结构化数据对 AI 的价值
JSON 和 YAML 是数字时代的"普通话"——不同系统之间交流的通用语言。
JSON(JavaScript Object Notation) 是最常用的数据交换格式。
{
"name": "张三",
"age": 25,
"email": "zhang@example.com",
"address": {
"city": "北京",
"district": "朝阳"
},
"hobbies": ["阅读", "游泳", "编程"]
}
规则说明:
{} 表示对象[] 表示数组| 类型 | 示例 | 说明 |
|---|---|---|
| 字符串 | "hello" |
用双引号包裹 |
| 数字 | 123、3.14 |
整数或浮点数 |
| 布尔值 | true、false |
真/假 |
| 数组 | [1, 2, 3] |
有序的数据列表 |
| 对象 | {"key": "value"} |
键值对集合 |
| null | null |
空值 |
| 优势 | 说明 |
|---|---|
| 通用性 | 所有编程语言都支持 |
| 可读性 | 人类可以轻松阅读 |
| 紧凑性 | 格式简洁,不浪费空间 |
| Web 标准 | HTTP API 的标准格式 |
无论你用 Python 写后端,用 JavaScript 写前端,还是让 AI 来写代码,大家都用 JSON 传递数据。如果不用 JSON,每种语言可能都有自己的"方言"格式,就像古代各地有自己的语言一样,交流起来很困难。
在讨论结构化数据时,CSV(Comma-Separated Values) 是最简单的格式之一。它用纯文本存储表格数据,每行是一条记录,字段用逗号分隔。
CSV 示例:
name,email,age
张三,zhang@example.com,25
李四,li@example.com,30
CSV 的特点:
CSV 的局限:
CSV vs JSON/YAML:
| 特性 | CSV | JSON/YAML |
|---|---|---|
| 结构 | 二维表格 | 任意嵌套 |
| 数据类型 | 无 | 字符串、数字、布尔等 |
| 关系表达 | 弱 | 强 |
| 适用场景 | 简单数据导出、表格交换 | 配置文件、API 数据、复杂结构 |
当你需要从电子表格导出数据,或者与使用 Excel 的同事交换简单数据时,CSV 很合适。但对于 Web 应用开发,JSON 和 YAML 是更好的选择,因为它们能表达更复杂的数据结构。
{
"id": "user_123",
"name": "张三",
"email": "zhang@example.com",
"avatar": "https://example.com/avatar.jpg",
"location": {
"country": "中国",
"province": "北京",
"city": "北京"
},
"birthday": "1990-01-15",
"phone": "+86 138 0000 0000"
}
# 应用配置
app:
name: "我的博客"
version: "1.0.0"
port: 3000
# 数据库配置
database:
host: "localhost"
port: 5432
name: "blog_db"
user: "admin"
password: "${DB_PASSWORD}" # 引用环境变量
# 功能开关
features:
enable_comments: true
enable_analytics: false
{
"success": true,
"data": {
"posts": [
{
"id": "1",
"title": "第一篇文章",
"author": "张三"
},
{
"id": "2",
"title": "第二篇文章",
"author": "李四"
}
],
"total": 2,
"page": 1
}
}
# GitHub Actions 配置
name: 部署
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 安装依赖
run: pnpm install
- name: 构建
run: pnpm build
- name: 部署
run: pnpm deploy
JSON 标准不支持注释。需要注释可以用 JSONC(JSON with Comments)或改用 YAML。
只能用空格,不能用 Tab。通常用 2 个空格作为一级缩进。
大多数编辑器都有语法检查。让 AI 帮忙修复也是好办法,它会指出具体错误并给出正确格式。