上一节我们详细讲解了JS中的保留关键字,本节我们将学习JS中的JSON。那什么是JSON呢?在JS里,JSON是一种常用的数据传输格式,服务端和客户端如果进行数据传输,一般都是通过JSON格式进行表达。
我们先来看一个JSON实例:
{"course":[
{"C语言网":"dotcpp.com"},
{"C语言教程":"https://www.dotcpp.com/course/c/"},
{"计算机二级C语言":"https://www.dotcpp.com/course/erjic/"},
{"数据结构教程":"https://www.dotcpp.com/course/ds/"}
]}可以看出是一个course的对象,对应一个数组(包括4个元素)。
聪明的读者早就想到,这不是JS对象的创建方式吗?最大的特点就是键值对存储。
实际上,JSON内容的基本结构要么是对象,要么是数组:
/*对象(Object)*/
//json
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
/*数组(Array)*/
//json
["value1", "value2", "value3"]JSON里的值有别于JS。在JSON里,字符串必须要双引号包裹。下面罗列了一些JSON的值:
| 类型 | 示例 | 说明 |
|---|---|---|
| 字符串 | "Dotcpp" | 必须使用双引号 |
| 数字 | 1 , 0, 3.14, -1 | 整数、浮点数 |
| 布尔值 | true, false | 小写 |
| 空值 | null | 小写 |
| 对象 | {"key": "value"} | 键值对集合 |
| 数组 | [0, 1, 2, 3] | 有序值集合 |
当然,JSON里也存在转移字符:
| 转义序列 | 含义 |
|---|---|
\" | 双引号 |
\\ | 反斜杠 |
\/ | 正斜杠 |
\b | 退格符 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\uXXXX | Unicode 字符 |
值得注意的是,JSON本质是字符串。
console.log('{"Dotcpp编程":"dotcpp.com"}');//这是一个JSON,本质是字符串
console.log({"Dotcpp编程":"dotcpp.com"});//这是一个对象既然如此, 我们可以把接受到的JSON数据转为对象,方便操作;同理,也可以把对象转为字符串(JSON格式),直接用于数据传输。最常见的场景就是浏览器读取本地存储了:
// 存储到 localStorage
const website = {"Dotcpp编程": "dotcpp.com"};
localStorage.setItem('website', JSON.stringify(website));
// 从 localStorage 读取
const storedWebsite = JSON.parse(localStorage.getItem('website'));
console.log(storedWebsite["Dotcpp编程"]); // "dotcpp.com"总结:在JS里,JSON的本质是字符串,用于服务端和客户端的信息传输,同时要记住,JSON内的字符串需要通过双引号("")包裹!
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程