JSON格式的核心要素与示例解析
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,以易于人类阅读和编写、易于机器解析和生成为特点,它基于ECMAScript(欧洲计算机协会制定的js标准)的一个子集,但独立于编程语言,成为当前互联网应用中最常用的数据传输格式之一,要理解JSON的格式,需从其基本结构、数据类型、语法规则及实际应用场景入手。
JSON的基本结构:键值对的集合
JSON的核心结构是“键值对”(Key-Value Pair),通过键(Key)来唯一标识对应的值(Value),整体上,JSON数据有两种主要形式:对象(Object)和数组(Array),其他数据类型则作为值的组成部分。
对象(Object):用花括号包裹的无序集合
对象是JSON中最常用的结构,表示一组无序的键值对,其格式为:
{ "key1": value1, "key2": value2, ..., "keyN": valueN }
- 键(Key):必须是字符串,必须用双引号()包围(不能用单引号或无引号),键是唯一的,同一个对象中不能有重复的键。
- 值(Value):可以是任意JSON支持的类型(字符串、数字、布尔值、null、对象、数组)。
- 分隔符:键值对之间用英文冒号()分隔,多个键值对之间用英文逗号()分隔,最后一个键值对后无需逗号。
示例:
{
"name": "张三",
"age": 25,
"isStudent": false,
"address": {
"city": "北京",
"district": "海淀区"
}
}
这里,"name"、"age"、"isStudent"、"address"都是键,对应的值分别是字符串"张三"、数字25、布尔值false和另一个对象(嵌套对象)。
数组(Array):用方括号包裹的有序集合
数组表示一组有序的值的集合,格式为:
[ value1, value2, ..., valueN ]
- 元素(Value):可以是任意JSON支持的类型(包括字符串、数字、布尔值、null、对象、数组),且元素类型可以不同(不强制统一)。
- 分隔符:元素之间用英文逗号()分隔,最后一个元素后无需逗号。
- 索引:数组元素通过索引访问(从
0开始),体现“有序性”。
示例:
[
"苹果",
"香蕉",
{
"name": "橙子",
"price": 5.8
},
null
]
这是一个包含4个元素的数组:前两个是字符串,第三个是对象,第四个是null。
JSON支持的数据类型
JSON定义了6种基本数据类型,包括5种简单类型和1种复合类型(数组),具体如下:
字符串(String)
- 表示方式:用双引号()包围的字符序列(单引号无效)。
- 支持转义字符:如换行符(
\n)、制表符(\t)、双引号(\")、反斜杠(\\)等,转义字符以反斜杠(\)开头。 - 示例:
"Hello, JSON!"、"这是一个\"字符串\",包含\n换行"。
数字(Number)
- 表示方式:整数或浮点数,不区分整数和小数类型(统一为
Number)。 - 规则:
- 可包含正负号(如
-25、+3.14,通常省略); - 可包含小数点(如
14),但小数点前后至少有一个数字(如.5或均不合法,需写作5或0); - 可包含科学计数法(如
5e3表示1500,-2E-2表示-0.02); - 不能包含前导零(如
0123不合法,除非是0本身); - 不支持
NaN、Infinity等特殊值(需用字符串表示,如"NaN")。
- 可包含正负号(如
- 示例:
100、-3.14、5e3。
布尔值(Boolean)
- 表示方式:仅有两个值——
true(真)和false(假),全小写,首字母不能大写(如True或FALSE无效)。 - 示例:
"isActive": true、"isFinished": false。
null(空值)
- 表示方式:关键字
null,全小写,表示“空”或“无值”(不同于0、或false)。 - 示例:
"middleName": null(表示“中间名”字段为空)。
对象(Object)和数组(Array)
如前所述,对象和数组是复合类型,可嵌套使用,形成复杂的数据结构,一个用户列表可以用数组包含多个用户对象:
[
{
"id": 1,
"name": "用户1",
"hobbies": ["阅读", "游泳"]
},
{
"id": 2,
"name": "用户2",
"hobbies": ["游戏", "编程"]
}
]
这里,数组包含两个对象,每个对象的"hobbies"值又是一个数组(嵌套数组)。
JSON的语法规则(关键注意事项)
JSON的格式要求严格,违反语法规则会导致解析失败,以下是核心规则:
引号规范:键必须用双引号
JSON中的所有键(对象属性名)和字符串值,必须使用英文双引号()包围,不能用单引号()或无引号。
- ✅
"name": "张三" - ❌
'name': "张三"(单引号键无效) - ❌
name: "张三"(无引号键无效)
逗号使用:末尾元素不能有逗号
对象和数组中的最后一个元素后不能加逗号,否则会报错。
- ✅
{"a": 1, "b": 2} - ❌
{"a": 1, "b": 2,}(末尾逗号无效) - ✅
["apple", "banana"] - ❌
["apple", "banana",](末尾逗号无效)
注释:不支持原生注释
JSON标准不支持注释(如或),因为注释会影响机器解析,若需在JSON中添加说明,通常有两种方式:
- 用字符串字段存储注释(如
"_comment": "这是用户信息"); - 在传输前将注释移除(如开发阶段用JSON5格式,正式传输转为标准JSON)。
数据类型一致性:值需符合类型定义
JSON对值的类型要求严格,
- 数字不能加引号(如
"age": "25"是字符串,"age": 25才是数字); - 布尔值必须是
true/false,不能是"true"(字符串布尔值); null不能写作"null"(字符串null)。
编码:仅支持UTF-8
JSON标准规定,文本必须采用UTF-8编码,因此不支持非UTF-8字符(如GBK、ISO-8859-1编码的字符需先转为UTF-8)。
JSON格式示例:从简单到复杂
通过一个完整的示例,可以直观理解JSON的嵌套结构和类型组合:
{
"store": {
"name": "阳光超市",
"location": {
"city": "上海",
"street": "南京东路123号",
"coordinates": [121.4737, 31.2304]
},
"products": [
{
"id": "P001",
"name": "矿泉水",
"price": 2.5,
"stock": 100,
"category": "饮料"
},
{
"id": "P002",
"name": "面包",
"price": 8.0,
"stock": 50,
"category": "食品",
"isAvailable": true


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