JSON文件里的特殊字符,原来藏着这些秘密!
当我们打开一个JSON文件时,常常会看到各种符号和字符交织在一起,、[]、、、,甚至还有 null、true、false 这些看起来像“英文单词”的存在,这些字符可不是随意出现的,它们是JSON的“语法骨架”,各自承担着特定的角色,共同确保数据能够被计算机准确理解和解析,我们就来一一揭开这些字符的神秘面纱。
JSON的“建筑基石”:花括号 与方括号 []
这是JSON中最外层也是最常见的两种结构符号,它们定义了数据的容器类型。
-
花括号 (大括号) - 表示“对象” (Object)
- 含义:花括号用来包裹一个对象,对象在JSON中是一组无序的“键值对”(Key-Value Pair)集合,类似于编程语言中的字典(Dictionary)、哈希表(Hash Map)或结构体(Struct)。
- 结构:
{ "键1": 值1, "键2": 值2, ... } - “键” (Key):必须是字符串,用双引号 括起来,它就像数据的“名字”或“标签”。
- “值” (Value):可以是多种数据类型(字符串、数字、布尔值、数组、对象,甚至是null)。
- 示例:
{ "name": "张三", "age": 30, "isStudent": false }这里,
"name"、"age"、"isStudent"是键,对应的"张三"、30、false是值,整个花括号内容表示一个用户对象。
-
方括号
[](中括号) - 表示“数组” (Array)- 含义:方括号用来包裹一个数组,数组在JSON中是一组有序的值的集合,类似于编程语言中的数组(Array)或列表(List)。
- 结构:
[ 值1, 值2, 值3, ... ] - 特点:数组中的值可以是任何JSON支持的数据类型,包括字符串、数字、布尔值、数组、对象,甚至是null,多个值之间用逗号 分隔。
- 示例:
[ "苹果", "香蕉", "橙子" ]
这是一个包含三个字符串的数组,表示水果列表。
[ { "name": "张三", "age": 30 }, { "name": "李四", "age": 25 } ]这是一个包含两个对象的数组,表示用户列表。
数据的“粘合剂”与“分隔符”:冒号 与逗号 ``
冒号和逗号虽然单个看起来不起眼,但它们在JSON结构中扮演着至关重要的“粘合”和“分隔”角色。
-
冒号 - 键与值的“连接符”
- 含义:冒号用于分隔对象中的“键”和“值”,表示“这个键对应这个值”,它是键值对的核心标识。
- 位置:只能出现在对象内部,连接键和其对应的值。
- 示例:
"name": "张三"中,冒号连接了键"name"和值"张三"。
-
逗号 `` - 元素间的“分隔符”
- 含义:逗号用于分隔同一级别的多个数据元素,例如对象中的多个键值对,或数组中的多个值。
- 规则:
- 逗号不能出现在最后一个元素之后(JSON不允许 trailing comma)。
- 逗号必须出现在元素之间,用于区分不同的元素。
- 示例(对象中):
{ "name": "张三", "age": 30, "isStudent": false // 最后一个键值对后没有逗号 } - 示例(数组中):
[ "苹果", "香蕉", "橙子" ] // 元素之间用逗号分隔
数据的“引号”与“标识”:双引号 与特定值
-
双引号 - 字符串的“身份证”
- 含义:在JSON中,所有的字符串(包括对象的键)都必须用双引号 括起来,单引号 在JSON标准中是不合法的字符串界定符。
- 作用:明确标识一个字符串的开始和结束,避免与数字、布尔值等混淆。
- 示例:
"name"(键)、"张三"(字符串值)、"true"(这也是一个字符串,而非布尔值true)。
-
null- 表示“空值”或“无值”- 含义:
null表示一个空值或不存在的值,它不是一个字符串,也不是0,也不是false,就是纯粹的“无”。 - 示例:如果一个用户没有填写电话号码,可以用
"phone": null表示。
- 含义:
-
true和false- 布尔值的“开关”- 含义:
true表示真(是),false表示假(否),它们都是小写,并且不是字符串(不需要用双引号括起来)。 - 示例:
"isStudent": true表示该用户是学生。
- 含义:
数字与空白字符的“规矩”
-
数字:
- JSON中的数字不区分整数和浮点数,直接书写即可,如
30、14、-10。 - 数字不能放在引号内,否则会被当作字符串处理。
"30"是字符串,而30才是数字。
- JSON中的数字不区分整数和浮点数,直接书写即可,如
-
空白字符(空格、换行、制表符):
- JSON文件中的空格
`、换行符\n、制表符\t` 等主要用于格式化,让文件更易读,它们在解析时通常会被忽略,不会影响数据的实际含义。 - 示例:下面两个JSON数据是等价的:
{"name":"张三","age":30}{ "name": "张三", "age": 30 }
- JSON文件中的空格
JSON字符速查表
| 字符/符号 | 名称 | 含义与作用 | 示例 |
|---|---|---|---|
| 花括号 | 表示对象,包裹键值对集合 | { "key": "value" } |
|
[] |
方括号 | 表示数组,包裹有序的值集合 | [ "value1", "value2" ] |
| 冒号 | 在对象中,分隔键和值 | "key": "value" |
|
| 逗号 | 分隔同一级别的多个元素(如键值对或数组元素) | "key1": "value1", "key2": "value2" |
|
| 双引号 | 包裹字符串(包括对象的键) | "this is a string" |
|
null |
null | 表示空值或无值 | "optionalField": null |
true |
true | 布尔值,表示“真” | "isActive": true |
false |
false | 布尔值,表示“假” | "hasPermission": false |
| 数字 | 数字 | 整数或浮点数,不用引号 | "count": 10, "price": 99.98 |
| 空白字符 | 空格/换行/制表 | 格式化用,解析时通常忽略 | (用于美观排版) |
理解了这些JSON文件中常见字符的含义,就如同了一门“数据语言”的语法,下次再面对JSON文件时,你就能轻松看懂数据的结构,知道哪里是对象,哪里是数组,每个数据的类型是什么,从而更高效地处理和利用这些数据了,JSON虽然简单,但正是这些看似基础的字符,构建了现代数据交换的基石。



还没有评论,来说两句吧...