序列化和反序列话

定义:

首先来介绍一下什么是序列化和反序列化,下面是序列化和反序列话的定义

序列化:把对象转换为字节序列的过程称为对象的序列化。

反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

序列化的作用:

在介绍序列化的作用之前,请大家思考一个问题,对象是如何存储的,以及对象是如何传输的?

是的,这个问题的答案就是序列化的作用,那么对象是如何存储的呢?

1. 把对象串行化为二进制数据

2. 把对象串行化为格式化数据(比如Json序列化、XML序列化)

可以把串行化后的二进制数据或文件存储到磁盘等设备上,也可以传输到其他地方

其中提到的串行化就是序列化,它就是将对象编码成可存储和可传递的方式

总结序列化作用:序列化又称串行化,其目的是以某种存储形式使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方。

有了序列化的作用,那么反序列化的作用就应运而生:就是把存储或传输过来的二进制数据或XML Json等格式化文件反序列化为对象

上面这句话可能有一点拗口,可以细细理解一下

以上是我对序列化的一些理解,有不严谨或理解错误的地方希望大家多多批评指正

时间: 2024-11-05 21:39:17

序列化和反序列话的相关文章

序列化,反序列话实例

public class foo implements Serializable{    private int width;    private int height;    public int getWidth() {        return width;    }    public void setWidth(int width) {        this.width = width;    }    public int getHeight() {        return

php unserialize函数反序列话数组

有没有,遇到这种情况:使用serialize函数序列化一个数组后,然后想通过unserialize函数反序话,得到该数组,可是确报错,得不到想要的结果. 从网上搜索,发现很多网友都遇到相同的问题,好像说这是unserialize函数的bug. 不过,好在有人已经解决了,我就借花献佛,将他记录下来,供大家使用: 1.假如,是utf-8的数据,请使用下面的函数反序列化(我没有验证,可以尝试下) function mb_unserialize($serial_str) { $serial_str= p

Newtonsoft.Json序列化和反序列

这里下载:http://www.newtonsoft.com/products/json/安装:   1.解压下载文件,得到Newtonsoft.Json.dll   2.在项目中添加引用.. 序列化和反序列在.net项目中: Product product = new Product();   product.Name = "Apple"; product.Expiry = new DateTime(2008, 12, 28); product.Price = 3.99M; prod

(转)Newtonsoft.Json序列化和反序列

这里下载:http://www.newtonsoft.com/products/json/安装:   1.解压下载文件,得到Newtonsoft.Json.dll   2.在项目中添加引用.. 序列化和反序列在.net项目中: Product product = new Product();   product.Name = "Apple"; product.Expiry = new DateTime(2008, 12, 28); product.Price = 3.99M; prod

XML序列化和反序列注意点

XML序列化和反序列注意点 在开发过程中经常要用到xml序列化和反序列操作,在实际开发过程中有一些容易出现错误且不好解决的地方,下面就把我在工作中碰到的一些疑难点简单列出: 首先贴一段后面需要操作的代码 [XmlRoot("User")] public class User { public string Name { get; set; } public int Age { get; set; } [XmlArray("Orders")] [XmlArrayIte

Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader

这里下载:http://www.newtonsoft.com/products/json/安装:   1.解压下载文件,得到Newtonsoft.Json.dll   2.在项目中添加引用.. javascriptConvert.SerializeObject 序列化和反序列在.net项目中: Product product = new Product();  product.Name = "Apple"; product.Expiry = new DateTime(2008, 12,

python序列化与反序列

python序列化与反序列 在python中提供了两个模块可进行序列化.分别是pickle和json.他们两者的功能都差不多,dumps和dump都是进行序列化,而loads和load则是反序列化. 模块1:pickle pickle是python中独有的序列化模块.有个特别的名字,为泡菜.用于实现Python数据类型与Python特定二进制格式之间的转换. 1. .dumps()和.loads()为格式处理函数 import pickle #序列化 d = dict(name='Bob', a

【leetcode-449】序列化和反序列化二叉搜索树

序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建. 设计一个算法来序列化和反序列化二叉搜索树. 对序列化/反序列化算法的工作方式没有限制. 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树. 编码的字符串应尽可能紧凑. 注意:不要使用类成员/全局/静态变量来存储状态. 你的序列化和反序列化算法应该是无状态的. 思路: 普通的二叉树需要两种遍历结果才能固定二叉树,而

每天进步一点点-序列化和反序列(将对象写入硬盘文件and从硬盘文件读出对象)

一个类如果实现了Serializable接口,那么这个类创建的对象就是所谓序列化的对象.所谓"对象序列化": 简单一句话:使用它可以象存储文本或者数字一样简单的存储对象.一个应用是,程序在执行过程中突然遇到短电或者其他的故障导致程序终止,那么对象当前的工作状态也就会丢失,这对于有些应用来说是可怕的.用对象序列化就可以解决这个问题,因为它可以将对象的全部内容保存于磁盘的文件,这样对象执行状态也就被存储了,到需要时还可以将其从文件中按原样再读取出来,这样就解决了数据丢失问题.对象序列化可以