JSON语法完全指南
编程小白也能理解的JSON基础知识汇总
📌 什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它就像数据的快递包装箱 —— 让不同的程序系统能够轻松地交换和理解数据。
📌 简单理解:想象你要给朋友描述一本书的信息(书名、作者、价格等)。JSON就是按照特定规则写出来的”数据描述清单”。
JSON的主要特点:
- 📦 人类可读 – 文本格式,人能看懂
- ⚡ 轻量级 – 文件小,传输快
- 🔄 语言无关 – 几乎所有编程语言都支持
- 📝 自描述性 – 结构清晰,一看就懂
🧱 JSON基本结构
JSON数据由两种基本结构组成:
1. 对象(Object)
用花括号 {}
包裹,表示一个事物的一组属性(键值对)。类似于编程中的”对象”概念。
“name”: “张三”,
“age”: 25,
“isStudent”: true
}
2. 数组(Array)
用方括号 []
包裹,表示一组有序的值。类似于编程中的”列表”概念。
“苹果”,
“香蕉”,
“橙子”
]
💡 组合使用:对象和数组可以相互嵌套,构建复杂数据结构。例如:一个包含多个用户对象的数组。
🔤 JSON数据类型
JSON支持以下基本数据类型:
用双引号包裹的文本:"Hello JSON"
注意:必须使用双引号,单引号无效
整数或小数:42
或 3.14
支持科学计数法:1.5e3
(等于1500)
只有两个值:
true
(真)或
false
(假)
表示空值:null
相当于”没有值”或”空”的概念
⚠️ 重要区别:JSON不支持JavaScript中的undefined
类型,也没有日期类型(日期通常用字符串表示)
📜 JSON语法规则
JSON有严格的语法要求,以下是关键规则:
- 🔑 键名必须用双引号:
"name"
正确,name
错误 - 🔢 数据分隔用逗号:最后一个元素后不能有逗号
- 🧾 严格的数据类型:不支持函数、日期等特殊类型
- 🚫 没有注释:JSON标准不支持添加注释
- 🔤 字符串必须双引号:单引号字符串无效
- 📏 文件编码:通常使用UTF-8编码
✅ 正确 vs ❌ 错误示例
✅ 正确: {"name": "李四", "age": 30}
❌ 错误: {name: "李四", age: 30}
(键名缺少双引号)
❌ 错误: {"name": "李四", "age": 30,}
(最后多了一个逗号)
🔄 JSON与JavaScript对象的关系
JSON虽然源于JavaScript,但两者有重要区别:
是JavaScript语言中的数据结构
支持函数、日期等特殊类型
键名可以不用引号
可以有注释
是纯文本数据格式
只支持基本数据类型
键名必须用双引号
不能有注释
💡 转换关系:JSON可以看作JavaScript对象的严格子集。合法的JSON一定是合法的JavaScript对象,但反过来不一定成立。
🔁 JSON的使用:序列化与反序列化
JSON主要用于程序间数据交换,有两个核心操作:
1. 序列化(Stringify)
将程序中的对象/数据 ➡ 转换为JSON字符串
const user = { name: “王五”, age: 28 };
const jsonString = JSON.stringify(user);
// 结果: ‘{“name”:”王五”,”age”:28}’
2. 反序列化(Parse)
将JSON字符串 ➡ 转换回程序中的对象/数据
const userObj = JSON.parse(jsonStr);
console.log(userObj.name); // 输出: 王五
🌐 跨语言支持:几乎所有编程语言(Python、Java、C#等)都有类似的JSON处理函数
⚠️ 注意事项与常见错误
- 🚫 结尾多余的逗号:JSON不允许在最后一个元素后加逗号
- ⚠️ 数据类型错误:JSON不支持函数、日期等类型
- 🔠 引号问题:键名和字符串值必须使用双引号
- 📛 特殊字符转义:遇到引号、斜杠等特殊字符需使用反斜杠转义:
"file\\path"
- 📏 文件扩展名:JSON文件通常使用
.json
扩展名 - 🔍 验证工具:使用JSONLint等工具验证JSON格式是否正确
💡 最佳实践:
- 保持JSON结构简单清晰
- 使用有意义的键名
- 格式化JSON(缩进)增强可读性
- 在传输前压缩JSON以减少体积