提问人: 提问时间:3/11/2009 最后编辑:Karl Knechtel 更新时间:11/8/2023 访问量:122086
什么是序列化?
What is Serialization?
答:
看看这个,这会给你一个很好的解释:
http://en.wikipedia.org/wiki/Serialization
我认为术语序列化最常见的用法是将二进制对象转换为 XML(或其他字符串)表示形式,以便它可以存储在数据库/文件中或在 Web 服务调用中通过网络发送。反序列化是相反的过程 - 将 XML/字符串转换回对象。
编辑: 您可能会遇到的另一个术语是编组/解编组。编组与序列化的概念基本相同,解组与反序列化相同。
评论
序列化是将内存中的对象转换为字节流的过程,以便您可以执行诸如将其存储在磁盘上或通过网络发送之类的操作。
反序列化是相反的过程:将字节流转换为内存中的对象。
评论
Marshal
Unmarshal
Serialize
Deserialize
abc
0x61 0x62 0x63
0x00 0x61 0x00 0x62 0x00 0x63
序列化是指对象(内存块)以表单形式转换,而对象的状态可以保存在文件中(例如)。
把它看作是制作饼干 - 对象是一个面团,饼干 - 是一个序列化的面团。
因此,通过“序列化”,您可以将cookie发送给您的朋友。
类似的东西:-)
评论
序列化是将对象转换为可存储的位序列。
因此,您可以将此序列保存到文件、数据库或通过网络发送。
稍后,您可以将其反序列化为实际对象,并在需要时重用它。
Web 服务和 AJAX 是序列化最常见的示例。在将响应发送到客户端之前序列化的对象。
序列化是将数据转换为线性的字节“字符串”。
其他人或多或少也说过同样的话,但我强调的是,计算机模型要求数据适合一维寻址的RAM或持久存储。
大多数“数据”本质上是可序列化的(即使你必须将抽象模型简化为线性模型);不可序列化的是网络连接或复杂的基于状态的机器,如解析器。
序列化与将二进制对象转换为 XML(或其他字符串)表示形式有关,以便它可以存储在数据库/文件中,或者在 Web 服务调用中通过网络发送。反序列化是相反的过程 - 将 XML/字符串转换回对象。
序列化是将无序数据(例如对象)转换为一系列标记的过程,这些标记稍后可用于重建原始数据。序列化形式通常是文本字符串,但不一定是。
序列化只不过是将 Java 支持的对象传输到文件支持的形式
(或)
将 Java 支持的表单转换为网络支持的表单。.序列化的主要范围无非是将数据从一层传输到另一层......只有序列化对象我们才能通过网络发送。.
当从类(蓝图)实例化(构造)实际对象(事物)时,需要通过将对象(事物)序列化(将其分解为其基本原子结构)来保存到内存中的空间。(有点像《星际迷航》运输车)。你把这个东西分解成它可以被传送到某个地方并存储的信息流。然后,当你想要重建这个东西时,你只需将原子存储的实例拉回对象中。与实例化不同。
简单地说,序列化是将对象转换为字节流的过程,以便它可以通过网络传输或存储在持久存储中。
反序列化则恰恰相反 - 从网络或持久性存储中获取字节流,并将其转换回具有相同状态的 Object。
需要理解的是,这些字节流是如何被解释或操作的,以便我们得到完全相同的对象/相同的状态。有多种方法可以实现这一目标。其中一些是——
- XML:将对象转换为 XML,通过网络传输或将其存储在文件/数据库中。检索它并将其转换回具有相同状态的对象。在 Java 中,我们使用 JAXB(Java architecture for XML binding)库。(从 java 6 开始,它与 JDK 捆绑在一起)。
- JSON:通过将 Object 转换为 JSON(JavaScript Object 表示法)也可以完成相同的操作。同样,有一个 GSON 库可用于此目的。
- 或者我们可以使用 OOP 语言本身提供的序列化。例如,在 Java 中,您可以序列化一个 Object,使其实现并写入 Object Stream。
Serializable interface
评论
JSON
序列化是将对象转换为二进制数据流的过程,以便它可以存储在文件中或通过网络发送,在那里它可以复活回同一个对象。
本文档应帮助您详细了解 Java 序列化。
序列化是将 Java、C# 或任何其他(OOP 语言)支持的对象转换为可传输形式的过程。这样,它就可以通过网络传输或存储在磁盘上。要使类可序列化,它必须实现可序列化的接口。
评论
什么是序列化?
通过图片类比解释:
总结:
序列化意味着将某些东西(例如我的狗 Rex)转换为一系列 1 和 0 - 可以传输/存储等。然后,我在海外的朋友可以将这些 1 和 0 转换回小狗的完美表现(反序列化)。
类比的澄清
朋友们,这是一个类比。我不认为你真的可以序列化一只小狗(还)。您将序列化数据结构或其他一些复杂对象。
(我写了这个答案,这样你就可以在 5 秒内以一种有趣的方式理解基本概念,然后继续前进——它从来都不是学术解释,也不是 100% 完美的。考虑维基百科关于序列化的条目或其他答案,或者随意编写自己的答案 - 你会很快意识到,完美地解释某些东西是不可能的,但 caviling 是超级容易的!
评论
序列化是将对象转换为字节流以存储对象或将其传输到内存、数据库或文件的过程。它的主要目的是保存对象的状态,以便能够在需要时重新创建它。相反的过程称为反序列化。
...
此图显示了序列化的整个过程
...
通过序列化,开发人员可以执行一些操作,例如通过 Web 服务将对象发送到远程应用程序、将对象从一个域传递到另一个域、将对象作为 XML 字符串通过防火墙传递,或者跨应用程序维护安全性或特定于用户的信息
从 https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/
(强调我的)
只需考虑以下想法即可理解它。
序列化:
"hello world".split() returns ['hello', 'world']
反序列化:
" ".join(['hello', 'world']) returns "hello world"
序列化是将对象转换为字节流以存储对象或将其传输到内存、数据库或文件的过程。它的主要目的是保存对象的状态,以便能够在需要时重新创建它。
上一个:“内存不足”是可恢复的错误吗?
下一个:什么是序列化?
评论