对象(Object)
什么是对象?
JSON 的对象(Object) 是用花括号 {} 包裹起来的一组键值对(key-value pair)。
它就像现实世界中的表格或档案卡:每个属性有一个名字(键),对应一个值。
生活类比
想象一份员工档案:
| 属性 | 值 |
|---|---|
| 姓名 | 航仔 |
| 部门 | 技术部 |
| 职位 | 后端开发 |
| 年龄 | 28 |
JSON 对象就是把这张表格变成电脑能读懂的格式:
{
"name": "航仔",
"department": "技术部",
"position": "后端开发",
"age": 28
}
对象的基本结构
{
"键1": 值1,
"键2": 值2,
"键3": 值3
}
必须遵守的 5 条规则:
| 规则 | 说明 | 示例 |
|---|---|---|
| 1. 用花括号包裹 | 以 { 开头,} 结尾 | { ... } |
| 2. 键必须是字符串 | 键名用双引号包裹 | "name" |
| 3. 键值用冒号分隔 | 冒号两边可以有空格 | "name": "航仔" |
| 4. 键值对用逗号分隔 | 逗号后面可以有空格 | ... , ... |
| 5. 最后一个不能加逗号 | 末尾逗号会导致错误 | ❌ "age": 28, |
对象的值可以是任何类型
对象的值不限于字符串,可以是 JSON 的任意 6 种类型:
示例 1:字符串值
{
"companyName": "广州飞翔科技",
"website": "www.feixiang.net",
"slogan": "愿你朝华相顾,愿你前程似锦。"
}
示例 2:数字值
{
"establishedYear": 2018,
"employeeCount": 12,
"worldPopulation": 8000000000
}
示例 3:布尔值和 null
{
"isActive": true,
"isPublicCompany": false,
"dissolvedDate": null
}
示例 4:嵌套对象(对象里套对象)
{
"name": "航仔",
"department": "技术部",
"personality": {
"trait": "沉稳靠谱",
"description": "话不多但代码干净,团队里的定海神针"
},
"hobbies": {
"outdoor": "钓鱼",
"reading": "科幻小说",
"food": "深夜撸串"
}
}
💡 嵌套对象就像俄罗斯套娃,一个对象里可以包含另一个对象,层级没有硬性限制(但建议不要太深,否则难以阅读)。
示例 5:数组值
{
"name": "翼王",
"department": "技术部",
"position": "架构师",
"hobbies": ["健身", "改装车", "收藏机械键盘"],
"traits": ["霸气外露", "技术独裁但护犊子", "开会喜欢拍桌子"]
}
键名重复会怎样?
RFC 8259 明确规定:对象内的键名应该是唯一的。
如果出现了重复的键名,不同的程序处理方式可能不同:
{
"name": "航仔",
"name": "翼王"
}
| 处理方式 | 结果 |
|---|---|
| 有些程序 | 保留最后一个值("翼王") |
| 有些程序 | 报错,无法解析 |
| 有些程序 | 保留所有值 |
⚠️ 建议:永远不要写重复的键名,这是不规范的写法!
对象的键名顺序重要吗?
不重要。
JSON 规范说对象是"无序集合",也就是说:
{ "name": "航仔", "age": 28 }
和
{ "age": 28, "name": "航仔" }
在语义上是完全等价的。
💡 虽然很多程序会按你写的顺序显示,但你不能依赖这个顺序来做逻辑判断。
实战:飞翔科技员工档案
用对象来描述飞翔科技的几位员工:
航仔 —— 后端开发
{
"name": "航仔",
"department": "技术部",
"position": "后端开发",
"personality": "沉稳靠谱,话不多但代码干净,团队里的定海神针",
"hobbies": ["钓鱼", "看科幻小说", "深夜撸串"],
"guangdongStyle": "经典粤式",
"isActive": true
}
图妹 —— 产品经理
{
"name": "图妹",
"department": "产品部",
"position": "产品经理",
"personality": "急性子,原型图画到半夜,和开发 battle 从不认输",
"hobbies": ["手账", "盲盒", "奶茶测评"],
"guangdongStyle": "靓女",
"isActive": true
}
鸣哥 —— 内容运营
{
"name": "鸣哥",
"department": "运营部",
"position": "内容运营",
"personality": "社牛,公司团建气氛组,写文案写到秃头但永远热血",
"hobbies": ["脱口秀", "剧本杀", "组织饭局"],
"guangdongStyle": "搞手",
"isActive": true
}
常见错误排查
| 错误写法 | 问题 | 正确写法 |
|---|---|---|
{ name: "航仔" } | 键名没加双引号 | { "name": "航仔" } |
{ "name": "航仔", } | 末尾多余逗号 | { "name": "航仔" } |
{ "name" "航仔" } | 缺少冒号 | { "name": "航仔" } |
{ 'name': '航仔' } | 用了单引号 | { "name": "航仔" } |
{ "name": 航仔 } | 字符串没加引号 | { "name": "航仔" } |
一句话总结
提示
JSON 对象就是 {} 包裹的键值对集合。记住:键用双引号、键值用冒号、键值对用逗号、末尾不加逗号!