JSON 的六种数据类型
JSON 数据类型总览
根据 RFC 8259 规范,JSON 一共只有 6 种数据类型:
| 类型 | 英文 | 示例 | 说明 |
|---|---|---|---|
| 字符串 | String | "飞翔科技" | 双引号包裹的文本 |
| 数字 | Number | 2018、-88.8 | 整数、小数、负数、科学计数法 |
| 布尔值 | Boolean | true、false | 只有这两个值,必须小写 |
| 空值 | Null | null | 表示"什么都没有" |
| 对象 | Object | {"name":"航仔"} | 花括号包裹的键值对集合 |
| 数组 | Array | ["航仔","翼王"] | 方括号包裹的有序列表 |
💡 关键记忆点:JSON 的类型非常少!只有这 6 种,没有日期类型、没有函数、没有 undefined。
四种"原始类型"(Primitive Types)
原始类型就像一颗颗独立的"原子",不能再拆分。
1. 字符串(String)
字符串就是文本,必须用双引号包裹。
"广州飞翔科技"
"www.feixiang.net"
"愿你朝华相顾,愿你前程似锦。"
""
合法 vs 非法:
| 写法 | 是否合法 | 原因 |
|---|---|---|
"飞翔" | ✅ 合法 | 双引号包裹 |
'飞翔' | ❌ 非法 | JSON 只能用双引号 |
飞翔 | ❌ 非法 | 没有引号 |
2. 数字(Number)
数字不需要引号,直接写数字即可。
18
2018
-88
3.14159
2.5e10
各种数字形式:
| 类型 | 示例 | 说明 |
|---|---|---|
| 整数 | 2018 | 公司成立年份 |
| 负数 | -10 | 温度零下 |
| 小数 | 36.5 | 体温 |
| 科学计数法 | 1.4e9 | 14亿 = 1.4 × 10⁹ |
⚠️ 注意:JSON 没有单独的"整数"和"浮点数"之分,统一都叫 Number。
3. 布尔值(Boolean)
布尔值只有两个:true(真) 和 false(假),必须全部小写。
true
false
实际例子:
{
"isPaid": true,
"hasFever": false,
"isFullHouse": false
}
| 写法 | 是否合法 | 原因 |
|---|---|---|
true | ✅ 合法 | 全小写 |
false | ✅ 合法 | 全小写 |
True | ❌ 非法 | 不能大写首字母 |
TRUE | ❌ 非法 | 不能全大写 |
4. 空值(Null)
null 表示"什么都没有"、"空"、"不存在",也必须小写。
null
实际例子:
{
"middleName": null,
"endDate": null,
"description": null
}
比如一个员工没有中间名,就可以用 null 表示。
两种"结构化类型"(Structured Types)
结构化类型是用来"装"其他数据的容器。
5. 对象(Object)
对象用花括号 {} 包裹,里面是键值对(key-value pairs)。
{
"name": "航仔",
"department": "技术部",
"position": "后端开发",
"age": 28
}
规则:
- 键(key)必须是字符串,用双引号包裹
- 键和值之间用冒号
:分隔 - 多个键值对之间用逗号
,分隔 - 最后一个键值对后面不要加逗号
6. 数组(Array)
数组用方括号 [] 包裹,里面是有序的值列表。
["航仔", "翼王", "凌叔", "空少", "风速"]
数组里的元素可以是不同类型:
[
"飞翔科技",
2018,
true,
null,
{"employees": 12}
]
类型对比一览表
用飞翔科技的员工信息来对比各种类型:
{
"company": "广州飞翔科技",
"website": "www.feixiang.net",
"established": 2018,
"employeeCount": 12,
"isHiring": true,
"shutdownDate": null,
"departments": ["技术部", "产品部", "运营部"],
"techLead": {
"name": "翼王",
"position": "架构师",
"age": 35
}
}
| 键 | 值 | JSON 类型 |
|---|---|---|
company | "广州飞翔科技" | 字符串 |
website | "www.feixiang.net" | 字符串 |
established | 2018 | 数字 |
employeeCount | 12 | 数字 |
isHiring | true | 布尔值 |
shutdownDate | null | 空值 |
departments | ["技术部", "产品部", "运营部"] | 数组 |
techLead | {...} | 对象 |
常见错误
错误 1:给数字加引号
❌ { "year": "2018" } // 这是字符串,不是数字
✅ { "year": 2018 } // 这才是数字
错误 2:键名不加引号
❌ { name: "航仔" } // 键名必须用双引号
✅ { "name": "航仔" } // 正确
错误 3:使用单引号
❌ { 'name': '航仔' } // JSON 只能用双引号
✅ { "name": "航仔" } // 正确
错误 4:末尾多余逗号
❌ { "name": "航仔", } // 最后一个逗号多余
✅ { "name": "航仔" } // 正确
一句话总结
提示
JSON 只有 6 种类型:字符串、数字、布尔值、null、对象、数组。记住它们的写法规则,你就掌握了 JSON 的一半!