数组(Array)
什么是数组?
JSON 的数组(Array) 是用方括号 [] 包裹起来的有序值列表。
数组就像现实生活中的排队、清单、排行榜——里面的元素按顺序排列,第一个、第二个、第三个……
生活类比
飞翔科技技术部的员工名单:
- 航仔(后端开发)
- 翼王(架构师)
- 凌叔(运维工程师)
- 空少(前端开发)
- 风速(算法工程师)
用 JSON 数组表示:
["航仔", "翼王", "凌叔", "空少", "风速"]
数组的基本结构
[ 值1, 值2, 值3, 值4 ]
必须遵守的规则:
| 规则 | 说明 | 示例 |
|---|---|---|
| 用方括号包裹 | 以 [ 开头,] 结尾 | [ ... ] |
| 元素用逗号分隔 | 逗号后面可以有空格 | "航仔", "翼王" |
| 最后一个不加逗号 | 末尾逗号会导致错误 | ❌ ["a", "b",] |
| 元素有序 | 顺序是有意义的 | 第一个、第二个…… |
数组元素可以是任何类型
JSON 数组的强大之处在于:元素可以是任意类型,而且同一个数组里的元素可以是不同类型。
示例 1:字符串数组
["技术部", "产品部", "运营部"]
示例 2:数字数组
[18, 28, 35, 25, 30]
示例 3:布尔值数组
[true, false, true, true, false]
示例 4:混合类型数组(合法但不太推荐)
["飞翔科技", 2018, true, null, {"employees": 12}]
⚠️ 虽然 JSON 允许混合类型,但实际编程时,通常建议一个数组里放同一种类型的数据,这样处理起来更方便。
示例 5:对象数组(最常用!)
这是实际开发中最常见的用法——数组里放多个对象:
[
{
"name": "航仔",
"department": "技术部",
"position": "后端开发"
},
{
"name": "翼王",
"department": "技术部",
"position": "架构师"
},
{
"name": "图妹",
"department": "产品部",
"position": "产品经理"
}
]
💡 这种"对象数组"结构非常常见,比如 API 返回"用户列表"、"商品列表"、"订单列表"时,基本都是这种格式。
数组可以嵌套
数组里可以放数组,形成多维数组:
示例:飞翔科技各部门员工名单
[
["航仔", "翼王", "凌叔", "空少", "风速"],
["图妹", "星宇", "靓晴"],
["鸣哥", "雁姐", "波比", "云吞"]
]
这表示:
- 第 1 个数组:技术部 5 人
- 第 2 个数组:产品部 3 人
- 第 3 个数组:运营部 4 人
示例:更清晰的嵌套结构(推荐)
[
{
"department": "技术部",
"members": ["航仔", "翼王", "凌叔", "空少", "风速"]
},
{
"department": "产品部",
"members": ["图妹", "星宇", "靓晴"]
},
{
"department": "运营部",
"members": ["鸣哥", "雁姐", "波比", "云吞"]
}
]
💡 第二种写法更清晰,因为每个数组元素都是一个对象,带有明确的部门名称。
空数组
数组里可以没有任何元素,这就是空数组:
[]
实际场景:比如一个部门暂时没有员工:
{
"department": "财务部",
"members": [],
"note": "暂未组建"
}
实战:飞翔科技完整员工列表
技术部全员
[
{
"name": "航仔",
"position": "后端开发",
"personality": "沉稳靠谱,话不多但代码干净",
"hobbies": ["钓鱼", "看科幻小说", "深夜撸串"]
},
{
"name": "翼王",
"position": "架构师",
"personality": "霸气外露,技术独裁但护犊子",
"hobbies": ["健身", "改装车", "收藏机械键盘"]
},
{
"name": "凌叔",
"position": "运维工程师",
"personality": "佛系老好人,凌晨三点被叫起来修服务器也不生气",
"hobbies": ["泡茶", "养鹦鹉", "逛花鸟市场"]
},
{
"name": "空少",
"position": "前端开发",
"personality": "自恋臭屁,天天照镜子的精致boy",
"hobbies": ["穿搭", "探店", "拍vlog"]
},
{
"name": "风速",
"position": "算法工程师",
"personality": "闷骚技术宅,说话快得像机关枪",
"hobbies": ["竞速游戏", "魔方", "收集跑鞋"]
}
]
运营部全员
[
{
"name": "鸣哥",
"position": "内容运营",
"personality": "社牛,公司团建气氛组",
"hobbies": ["脱口秀", "剧本杀", "组织饭局"]
},
{
"name": "雁姐",
"position": "用户运营",
"personality": "人精,用户心理摸得透透的",
"hobbies": ["炒股", "煲汤", "家长里短情报站"]
},
{
"name": "波比",
"position": "活动运营",
"personality": "鬼马机灵,活动策划永远有惊喜",
"hobbies": ["街舞", "极限运动", "薅羊毛"]
},
{
"name": "云吞",
"position": "社群运营",
"personality": "软萌治愈,用户投诉到她这儿都能消气",
"hobbies": ["探店", "做甜品", "追港剧"]
}
]
对象与数组的组合使用
实际应用中,对象和数组总是组合使用的:
{
"company": "广州飞翔科技",
"departments": [
{
"name": "技术部",
"headcount": 5,
"members": ["航仔", "翼王", "凌叔", "空少", "风速"]
},
{
"name": "产品部",
"headcount": 3,
"members": ["图妹", "星宇", "靓晴"]
},
{
"name": "运营部",
"headcount": 4,
"members": ["鸣哥", "雁姐", "波比", "云吞"]
}
],
"totalEmployees": 12
}
这个 JSON 描述了整个公司的组织架构:
- 最外层是一个对象
departments的值是一个数组- 数组里的每个元素又是一个对象
- 每个部门对象里,
members的值还是一个数组
常见错误
| 错误写法 | 问题 | 正确写法 |
|---|---|---|
['航仔', '翼王'] | 用了单引号 | ["航仔", "翼王"] |
["航仔", "翼王",] | 末尾多余逗号 | ["航仔", "翼王"] |
{"航仔", "翼王"} | 用了花括号 | ["航仔", "翼王"] |
一句话总结
提示
JSON 数组就是 [] 包裹的有序列表。元素可以是任意类型,最常用的是"对象数组"。记住:方括号、逗号分隔、末尾不加逗号!