1、JSON
什么是JSON?
- JSON:JavaScript Object Notation
- JSON是服务器响应给客户端的数据格式
- 也可以把JSON数据给服务器
- JSON是客户端与服务器之间通信的一种数据格式
JSON的语法要求:
- 支持的数据类型:数字、字符串、布尔值、null值、数组、对象
- 不支持的数据类型:函数、undefined
- 对象的key必须用双引号包起来
- JSON中没有注释
- 可以通过某些网站进行格式化校验
常见格式:
第一种:
"hello json"
第二种
{
"name":"tom",
"age":18,
"friend":{
"name":"mary"
},
"hobbies":["pingpang","dance"]
}
第三种:
[
"abc",123,{"name":"tom"}
]
2、JSON的序列化和反序列化
- 序列化:将JS对象转化成JSON串
- 反序列化:将JSON串还原成JS对象
序列化
将obj对象存储到硬盘(local storage)
let obj = {name:"tom"}
window.localStorage.setItem("obj", obj)
由于local storage中只能存储字符串,obj会调用toString方法尝试转成字符串。
obj.toString();
// 输出:'[object Object]'
需将obj对象转成JSON串之后再存储,这个过程叫序列化
let obj = {name:"tom"}
let objstr = JSON.stringify(obj);
window.localStorage.setItem("obj",objstr);
反序列化
let str = window.localStorage.getItem("obj"); //获取local Storage中的对象
let obj = JSON.parse(str); //反序列化
JSON实现深copy
let obj = {name:"jerry"}
// let newObj = obj; //浅copy
let objstr = JSON.stringify(obj); //序列化
let newObj = JSON.parse(objstr); //反序列化
obj.name = "hello jerry";
console.log(newObj.name); //jerry