摘要:本文学习了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
规则:
- 键名必须是字符串,必须使用双引号包围。
- 键名和值之间使用冒号分隔。
- 键值对之间使用逗号分隔,最后一个键值对后不能有逗号。
示例:
json1 2 3 4 5 6
| { "firstName": "李", "lastName": "四", "age": 30, "email": "lisi@example.com" }
|
2.2 字符串
语法:
json
规则:
- 字符串必须使用双引号包围,不能使用单引号。
- 字符串中可以包含转义字符。
转义字符:
\" 双引号
\\ 反斜杠
\n 换行符
\r 回车符
\t 制表符
\uXXXX Unicode字符
示例:
json1 2 3 4 5
| { "message": "他说:\"你好!\"", "path": "C:\\Windows\\System32", "multiline": "第一行\n第二行" }
|
2.3 数字
语法:
json
规则:
示例:
json1 2 3 4 5 6
| { "integer": 42, "float": 3.14159, "negative": -10, "scientific": 1.2e5 }
|
2.4 布尔值和空值
语法:
json
示例:
json1 2 3 4 5
| { "isActive": true, "isDeleted": false, "middleName": null }
|
3 基本结构
3.1 基本数据类型
支持以下数据类型:
- 字符串(String)
- 数字(Number)
- 布尔值(Boolean)
- 空值(Null)
- 对象(Object)
- 数组(Array)
3.2 对象结构
对象在大括号{}中书写,对象可以包含多个键值对:
json1 2 3 4 5
| { "key1": "value1", "key2": "value2", "key3": "value3" }
|
规则:
- 键名必须是字符串,必须使用双引号包围。
- 键名和值之间使用冒号分隔。
- 键值对之间使用逗号分隔,最后一个键值对后不能有逗号。
- 值可以是任意JSON支持的数据类型。
示例:
json1 2 3 4 5 6
| { "name": "张三", "age": 25, "isStudent": false, "hobbies": ["读书", "游泳", "编程"] }
|
3.3 数组结构
数组在中括号[]中书写,数组可以包含多个值:
json1 2 3 4 5
| [ "value1", "value2", "value3" ]
|
规则:
- 数组用方括号
[]表示
- 数组值之间用逗号分隔
- 数组值可以是任意JSON支持的数据类型
- 数组中的值可以是不同的数据类型
示例:
json
4 嵌套结构
4.1 对象嵌套
对象中可以嵌套其他对象:
json1 2 3 4 5 6 7 8 9 10
| { "person": { "name": "王五", "address": { "street": "人民路", "city": "北京", "postalCode": "100000" } } }
|
4.2 数组嵌套
数组中可以包含对象或其他数组:
json1 2 3 4 5 6 7 8 9 10 11 12
| { "students": [ { "name": "张三", "grade": 85 }, { "name": "李四", "grade": 92 } ] }
|
4.3 复杂嵌套
示例:
json1 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主要用于前后端数据交换:
json1 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常用于应用程序配置文件:
json1 2 3 4 5 6
| { "app": { "name": "我的应用", "version": "1.0.0" } }
|
5.3 数据存储
JSON格式适合存储结构化数据:
json1 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 } ] }
|
条