序列化(前端)

序列化


前言

提到序列化,总感觉不是那么了解,在网上查来查去,最后看到了JSON.stringify()方法。这个和序列化有关系吗?因为我也是做前端的嘛,也算是做了很长长时间,发了那么多请求,这个知识竟然不知道!!!之前只知道用,但是从来不考虑为什么要用。
学习某个知识,知道它怎么用是最基础的,我们应该还需要清楚为什么用它,要有深入思考的能力。闲话不多说,我做一下总结吧。


序列化

谈及定义,前端和后端的序列化还是有区别的。

前端

定义:将对象转换成字符串。

后端

定义:将java对象转换成字节流序列(二进制)的过程。


为什么要序列化呢?(why)

前端

这个主要涉及到了对象的存储方式。js有简单数据类型和引用数据类型。简单数据类型包括Number、String、Boolean、undefined、null、symbol。引用数据类型包括Object、function、array

往往传递对象的时候需要序列化,因为它是引用数据类型。对象在存储的时候,存放它的地方是堆空间,而在内存中它只是个指针。举个例子:

let data = {"name":"test"}

{"name":"test"},这个它是我们要存的东西,它存放在堆中,比如它的门牌号(地址)是404。

data,这个就是404,所以它并不是这个东西本身。也就是算一把钥匙吧。

如果我们直接将这个data传给后端,实际传过去的并不是数据本身-{"name":"test"},而是一个地址-404。所以,序列化登场了。

它的作用就是将对象转换成字符串传过去!!!


这时,你们有没有这么一个问题,为什么字符串可以传过去啊,因为字符串它是简单数据类型,它在内存中存的什么就是什么。 所以它可以不用JSON.stringify()


实验

部分代码

// let data = {
    let data = {
        username:'test',
        password:'test'
    }
    data = JSON.stringify(data)
    // ajax调用
    ajax('post', url, data)
const body = req.body
console.log(body)

后端接收到的,可以看到成功接收,如果注释掉data = JSON.stringify(data)
在这里插入图片描述
结果:接收不到了。
在这里插入图片描述


传递一个简单的数据类型呢?这里没有用JSON.stringify(data)

let data = 1
// ajax调用
ajax('post', url, data)

可以看到后端成功接收
在这里插入图片描述
所以。当我们如果传递一个简单数据类型的时候,就无需序列化


因为我本人研究后端,这里我就不详细说明序列号在后端的用途了。稍微提及一下吧。序列化在后端主要有以下两个用途。

  • 将数据内容保存在磁盘上。
  • 进行网络通信。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值