javascript - 经常听到序列化和反序列化,请问这个有什么用?
高洛峰
高洛峰 2017-04-11 09:01:54
0
17
1092

问题可能文的很泛,因为不了解,所以就这么问了,可以从几个方面解答么。

一个是序列化和反序列化一般用于哪里?
另外一个是如何使用?
使用这个的好处是什么?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(17)
刘奇

你也知道这样的问题很泛。如果我要回答你,肯定会去百度一资资料来,粘贴在这里,哪为何,你自己不去百度呢
这样的问题 google 和 百度才是最好的老师

大家讲道理

最常用的场景,应该就是持久化对像了吧。比如你要把一个对像存进mysql

Ty80

就是你这次创建了个对象,或者数组,
执行一定的操作之后,你把他存起来,然后方便下次用,你直接拿出来用就行了,
你像你打游戏,下线了,下次上线接着这次的进度开始玩,不用重新申请帐号,重新升级了;

还有就是多种语言之间互动,比如你 在外国 饭店 要吃鸡,你说中文他听不懂,
他能听懂的你不会说,
你就画了一个鸡,你认识,他也认识,这个画的鸡,就是序列化...

Ty80

简单理解就是计算机之间是通过二进制通信,所以需要把内存中的对象等序列化为二进制数据,接收方再反序列成对象。

Ty80

其实应用场景很简单,你在一端将一个内存对象写入到socket中,接收端接受到之后直接使用这个对象。 前面是序列化,后面是反序列化。 完成这个功能的方式有很多,比如最简单的json格式,httpserver会将自己的数据嵌套起来,并且dump成文json字符串发给浏览器,浏览器js代码接受到数据直接将json转换为js数据结构,将接受到的串透明地转换成对象。

PHPzhong

比如你要用localStorage,要存储的数据是个对象,但是localStorage只能存字符串,你怎么办?办法之一就是将对象序列化为一个json字符串,等你要用localStorage中的数据时,你就可以把其中的json字符串反序列化为js对象后使用,明白吗?

左手右手慢动作

问题的根源在于你不懂网络编程!
无论是进程间、线程间的通讯,网络之间client和server通过socket通讯,还是把对象写到db(实际上也是socket)。
这些网络交互都是通过收发二进制流的,所以发送时候需要将对象序列化二进制数据发送出去,之后接收端收到二进制数据,再通过反序列化变成对象。
要搞清楚问题前,先搞清楚自己不懂的是什么

巴扎黑

约定如下:如果将协议、格式、规范定义为特殊,将运行时对象定义为通用,那么通用的对象基本都是存储在于交互困难的内存中的,而特殊存在于其他交互方便的(例如java对象在Java生态圈是通用的,json格式在Java生态就是特殊的)。

由此序列化即“通用”转为“特色”,反之即反序列化。因为序列化也可从内存到硬盘,所以序列化是包括持久化的。

一般的协议、规范、格式都是对各个生态友好的,普遍用于生态圈之间的数据交互。

具体的用法不尽相同。

通常我们说序列化是基于某个语言生态圈的,比如用Java将Java bean对象序列化为xml。而“浏览器将html反序列化为dom对象” “将数据库数据序列化为json”这种说法是省略语言的说法

阿神
  1. 存储数据

  2. 传输数据

大家讲道理

序列化,就是把要用的东西用某种方式存起来,方便日后调用。

反序列化,就是调用先前序列化存起来的数据

个人理解(关于序列化与反序列化我只在php类和json数据时用到过…),仅供参考~

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template