掌握JSON的六种基本数据类型及其使用方法
JSON(JavaScript Object Notation)支持六种基本数据类型。这些数据类型可以分为两类:
{
"string": "这是一个字符串",
"number": 42,
"boolean": true,
"nullValue": null,
"object": {
"key": "value"
},
"array": [1, 2, 3, 4, 5]
}
表示文本数据
整数或浮点数
true 或 false
表示空值
键值对集合
有序值列表
JSON字符串是由零个或多个Unicode字符组成的序列,使用双引号括起来。
"Hello, World!"
"JSON教程"
""
"这是一个较长的字符串,可以包含空格和标点符号。"
JSON字符串中某些字符需要使用反斜杠进行转义:
| 字符 | 转义序列 | 描述 | 示例 |
|---|---|---|---|
| 双引号 | \" | 字符串中的双引号 | "他说:\"你好!\"" |
| 反斜杠 | \\ | 字符串中的反斜杠 | "路径:C:\\Windows\\System32" |
| 换行 | \n | 新行 | "第一行\n第二行" |
| 回车 | \r | 回车 | "文本\r新行开始" |
| 制表符 | \t | 水平制表符 | "姓名\t年龄" |
| 退格 | \b | 退格 | "123\b" (显示为"12") |
| 换页 | \f | 换页 | "页面1\f页面2" |
| Unicode | \uXXXX | Unicode字符 | "\u4e2d\u56fd" (显示为"中国") |
{
"message": "他说:\"你好!\"",
"path": "C:\\Users\\Documents\\file.txt",
"multiline": "第一行\n第二行\n第三行",
"tabbed": "姓名\t年龄\t城市",
"unicode": "\u4e2d\u56fd\u4eba"
}
JSON数字可以是整数或浮点数,使用十进制表示法。JSON不区分整数和浮点数,也不支持其他进制(如二进制、八进制或十六进制)。
42
3.14159
-10
0.5
1.2e5
1.2e-5
0
不带小数点的数字:
0
42
-100
1000000
带小数点的数字:
3.14
-2.5
0.001
6.022e23 // 科学计数法
{
"age": 25,
"price": 19.99,
"temperature": -5.5,
"population": 1.4e9
}
{
"age": "25", // 使用引号,变成了字符串
"price": 19,99, // 使用了逗号作为小数分隔符
"count": 0123, // 前导零
"value": NaN, // NaN不是有效JSON
"infinity": Infinity // Infinity不是有效JSON
}
JSON布尔值表示真或假,只有两个值:true 和 false。它们必须小写,且不使用引号。
true
false
{
"isActive": true,
"isDeleted": false,
"hasPermission": true,
"isValid": false
}
{
"isStudent": true,
"isEmployed": false
}
{
"isStudent": "true", // 使用引号,变成了字符串
"isEmployed": FALSE, // 应该小写
"isActive": True, // 应该小写
"isValid": 1, // 数字不是布尔值
"isDeleted": "false" // 使用引号,变成了字符串
}
JSON中的null表示空值或缺失值。它必须小写,且不使用引号。
null
{
"name": "张三",
"middleName": null,
"age": 30,
"spouse": null,
"children": []
}
{
"optionalField": null,
"deletedAt": null
}
{
"optionalField": "null", // 使用引号,变成了字符串
"deletedAt": NULL, // 应该小写
"emptyValue": Null // 应该小写
}
JSON对象是无序的键值对集合,使用大括号{}包裹。键必须是字符串,值可以是任何JSON数据类型。
{
"name": "张三",
"age": 30,
"isStudent": false
}
{
"person": {
"name": "李四",
"age": 25,
"address": {
"street": "人民路123号",
"city": "北京",
"country": "中国"
}
},
"isEmployed": true
}
{
"string": "文本值",
"number": 42,
"boolean": true,
"nullValue": null,
"object": {
"nestedKey": "嵌套值"
},
"array": [1, 2, 3]
}
JSON数组是有序的值集合,使用中括号[]包裹。数组中的值可以是任何JSON数据类型,包括其他数组和对象。
["苹果", "香蕉", "橙子"]
[
"字符串",
42,
true,
null,
{
"对象键": "对象值"
},
[1, 2, 3]
]
[
{
"id": 1,
"name": "张三",
"age": 30
},
{
"id": 2,
"name": "李四",
"age": 25
},
{
"id": 3,
"name": "王五",
"age": 35
}
]
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
[]表示| 数据类型 | 描述 | 示例 | 注意事项 |
|---|---|---|---|
| 字符串 | 文本数据 | "Hello" |
必须使用双引号 |
| 数字 | 整数或浮点数 | 42, 3.14 |
不使用引号,不支持NaN/Infinity |
| 布尔值 | 真或假 | true, false |
必须小写,不使用引号 |
| Null | 空值 | null |
必须小写,不使用引号 |
| 对象 | 键值对集合 | {"key": "value"} |
键必须使用双引号 |
| 数组 | 有序值列表 | ["a", "b", "c"] |
元素使用逗号分隔 |
{
"user": {
"id": 12345,
"username": "john_doe",
"fullName": "John Doe",
"age": 30,
"isActive": true,
"isVerified": false,
"lastLogin": null,
"preferences": {
"theme": "dark",
"notifications": true,
"language": "zh-CN"
},
"tags": ["developer", "javascript", "web"],
"scores": [95, 87, 92, 88],
"contacts": [
{
"type": "email",
"value": "john@example.com"
},
{
"type": "phone",
"value": "+1234567890"
}
]
},
"metadata": {
"version": "1.0",
"createdAt": "2023-01-15T10:30:00Z",
"updatedAt": null
}
}