在 JSON 中,数组(Array) 和 对象(Object) 是两种不同的数据结构,用途和语法有明显区别。以下是它们的核心差异:
一、语法区别
| 特征 | 数组(Array) | 对象(Object) |
|---|---|---|
| 符号 | 用方括号 [] 包裹 | 用花括号 {} 包裹 |
| 元素格式 | 由逗号分隔的 值(Value) 列表 | 由逗号分隔的 键值对(Key-Value) 列表 |
| 示例 | [1, "apple", true] | {"name": "John", "age": 30} |
二、用途区别
1. 数组(Array)
- 存储有序的同类数据,例如:json
["red", "green", "blue"] - 允许重复:同一个值可以多次出现。
- 通过索引访问:元素通过数字下标(从
0开始)访问,例如array[0]。
2. 对象(Object)
- 存储无序的键值对,表示一个实体的属性,例如:json
{"id": 1, "name": "Alice", "isAdmin": true} - 键唯一性:每个键(Key)在对象中唯一。
- 通过键名访问:值通过键名访问,例如
object.name。
三、数据访问对比
1. 数组访问示例
json
{
"users": [
"Alice",
"Bob",
"Charlie"
]
}- 获取第一个用户:
data.users[0]→"Alice"
2. 对象访问示例
json
{
"user": {
"name": "John",
"age": 30
}
}- 获取用户年龄:
data.user.age→30
四、嵌套使用场景
JSON 允许数组和对象互相嵌套,以表示复杂数据:
json
{
"products": [
{
"id": 1,
"name": "Phone",
"price": 599
},
{
"id": 2,
"name": "Laptop",
"price": 1299
}
]
}- 解释:
products是数组,每个元素是一个对象。
五、关键区别总结
| 特性 | 数组(Array) | 对象(Object) |
|---|---|---|
| 顺序性 | 有序 | 无序(键值对的顺序无关紧要) |
| 元素类型 | 值(Value) | 键值对(Key-Value) |
| 访问方式 | 通过索引(数字下标) | 通过键名(字符串或符号) |
| 典型用途 | 存储列表(如多个用户、商品) | 存储实体属性(如用户详情、配置项) |
| 重复性 | 允许重复值 | 键必须唯一,值可以重复 |
六、性能考虑(高级)
- 数组查找:查找元素需要遍历(时间复杂度 O(n))。
- 对象查找:通过键名直接访问(时间复杂度 O(1)),适合快速查询。
七、代码示例(JavaScript)
javascript
// 数组操作
const colors = ["red", "green", "blue"];
console.log(colors[1]); // "green"
// 对象操作
const user = {name: "John", age: 30};
console.log(user.age); // 30
// 嵌套结构
const data = {
employees: [
{id: 1, name: "Alice"},
{id: 2, name: "Bob"}
]
};
console.log(data.employees[0].name); // "Alice"如果你需要处理 JSON 数据,记住:
✅ 用数组:当需要一组同类数据(如列表、集合)。
✅ 用对象:当需要描述一个实体的属性(如配置项、用户详情)。