抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文学习了JSON的基本语法和结构。

1 简介

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。

JSON最大的特点有三个:

  • 简洁清晰:JSON格式简洁,层次结构清晰,易于阅读和编写。
  • 易于解析:JSON格式易于机器解析和生成,提升网络传输效率。
  • 语言独立:虽然源自JavaScript,但JSON是语言独立的数据格式。

JSON与XML的区别:

  • 数据体积:JSON相对于XML来讲,数据的体积小,传输速度更快。
  • 解析难度:JSON与JavaScript的交互更加方便,更容易解析处理。
  • 数据描述:JSON对数据的描述性比XML较差。
  • 传输速度:JSON的传输速度远快于XML。

2 语法

2.1 键值对

语法:

json
1
"键名":

规则:

  • 键名必须是字符串,必须使用双引号包围。
  • 键名和值之间使用冒号分隔。
  • 键值对之间使用逗号分隔,最后一个键值对后不能有逗号。

示例:

json
1
2
3
4
5
6
{
"firstName": "李",
"lastName": "四",
"age": 30,
"email": "lisi@example.com"
}

2.2 字符串

语法:

json
1
"字符串内容"

规则:

  • 字符串必须使用双引号包围,不能使用单引号。
  • 字符串中可以包含转义字符。

转义字符:

  • \" 双引号
  • \\ 反斜杠
  • \n 换行符
  • \r 回车符
  • \t 制表符
  • \uXXXX Unicode字符

示例:

json
1
2
3
4
5
{
"message": "他说:\"你好!\"",
"path": "C:\\Windows\\System32",
"multiline": "第一行\n第二行"
}

2.3 数字

语法:

json
1
数值

规则:

  • 可以是整数或浮点数。
  • 可以使用科学计数法。

示例:

json
1
2
3
4
5
6
{
"integer": 42,
"float": 3.14159,
"negative": -10,
"scientific": 1.2e5
}

2.4 布尔值和空值

语法:

json
1
2
3
true
false
null

示例:

json
1
2
3
4
5
{
"isActive": true,
"isDeleted": false,
"middleName": null
}

3 基本结构

3.1 基本数据类型

支持以下数据类型:

  • 字符串(String)
  • 数字(Number)
  • 布尔值(Boolean)
  • 空值(Null)
  • 对象(Object)
  • 数组(Array)

3.2 对象结构

对象在大括号{}中书写,对象可以包含多个键值对:

json
1
2
3
4
5
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}

规则:

  • 键名必须是字符串,必须使用双引号包围。
  • 键名和值之间使用冒号分隔。
  • 键值对之间使用逗号分隔,最后一个键值对后不能有逗号。
  • 值可以是任意JSON支持的数据类型。

示例:

json
1
2
3
4
5
6
{
"name": "张三",
"age": 25,
"isStudent": false,
"hobbies": ["读书", "游泳", "编程"]
}

3.3 数组结构

数组在中括号[]中书写,数组可以包含多个值:

json
1
2
3
4
5
[
"value1",
"value2",
"value3"
]

规则:

  • 数组用方括号[]表示
  • 数组值之间用逗号分隔
  • 数组值可以是任意JSON支持的数据类型
  • 数组中的值可以是不同的数据类型

示例:

json
1
2
3
4
5
[
"苹果",
"香蕉",
"橙子"
]

4 嵌套结构

4.1 对象嵌套

对象中可以嵌套其他对象:

json
1
2
3
4
5
6
7
8
9
10
{
"person": {
"name": "王五",
"address": {
"street": "人民路",
"city": "北京",
"postalCode": "100000"
}
}
}

4.2 数组嵌套

数组中可以包含对象或其他数组:

json
1
2
3
4
5
6
7
8
9
10
11
12
{
"students": [
{
"name": "张三",
"grade": 85
},
{
"name": "李四",
"grade": 92
}
]
}

4.3 复杂嵌套

示例:

json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"company": "某科技有限公司",
"employees": [
{
"id": 1,
"name": "张三",
"department": "技术部",
"skills": ["Java", "SQL"],
"contact": {
"email": "zhangsan@example.com",
"phone": "13800000001"
}
},
{
"id": 2,
"name": "李四",
"department": "市场部",
"skills": ["营销", "策划"],
"contact": {
"email": "lisi@example.com",
"phone": "13800000002"
}
}
],
"totalEmployees": 2
}

5 应用场景

5.1 数据交换

JSON主要用于前后端数据交换:

json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 请求数据
{
"username": "zs",
"password": "123456"
}

// 响应数据
{
"success": true,
"message": "登录成功",
"user": {
"id": 1,
"name": "张三"
}
}

5.2 配置文件

JSON常用于应用程序配置文件:

json
1
2
3
4
5
6
{
"app": {
"name": "我的应用",
"version": "1.0.0"
}
}

5.3 数据存储

JSON格式适合存储结构化数据:

json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"students": [
{
"id": 1,
"name": "张三",
"age": 16,
"grade": 85
},
{
"id": 2,
"name": "李四",
"age": 18,
"grade": 92
}
]
}

评论