JS高级十五:JSON

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值