什么是编程中的"序列化"对象?

Mos*_*she 39 language-agnostic serialization

我已经看到了"序列化"一词,但从未解释过.请解释一下这意味着什么.

jal*_*alf 54

序列化通常是指将抽象数据类型转换为字节流的过程(有时也会序列化为文本,XML或CSV或其他格式.重要的是它是一种可以在不理解的情况下读取/写入的简单格式数据所代表的抽象对象).将数据保存到文件或通过网络传输时,您不仅可以存储MyClass对象,而且只能存储字节.因此,您需要获取重建对象所需的所有数据,并将其转换为可写入目标设备的字节序列,并在稍后的某个时间读回和反序列化,重建对象.

  • 类对象是抽象数据类型.摘要,如"不是原始数据类型,而是代表抽象概念的东西".`Car`类是一种抽象数据类型.它代表程序中抽象的东西.里面没有车.只是提供一个抽象的数据.并且必须拆除抽象以将其序列化.您不能将汽车存储到文件中,但可以存储重建"Car"类实例所需的数据. (14认同)
  • 不,我不是.我不是在谈论抽象类,我同意这是完全不同的.抽象数据类型对于类来说几乎是一个更通用的术语(除了它很好地涵盖了无类语言中的等价物).类是抽象,它是一种数据类型.将它称为抽象数据类型并不是我想出的想法.:) (7认同)

Mit*_*eat 12

序列化是获取对象实例并将其转换为可以通过网络传输或持久存储到存储(例如文件或数据库)的格式的过程.序列化格式包含对象的状态信息.

反序列化是使用序列化状态将对象从序列化状态重建为其原始状态的过程.


kei*_*en7 5

实际的简单解释是,序列化是将内容中的某些内容(如类(对象)的实例)转换为适合传输或存储的结构的行为.

一个常见的例子是用于Web服务的XML序列化 - 我在服务器上有一个类的实例,需要通过Web将它发送给你,我首先将它序列化为xml,这意味着要创建一个xml版本的数据.这个类,一旦在xml中,我可以使用像HTTP这样的传输来轻松发送它.

有几种形式的序列化,如XML或JSON.


Jer*_*fin 5

序列化有(至少)两种完全不同的含义.一种是将内存中的数据结构转换为比特流,因此可以将其写入磁盘并在以后重构,或通过网络连接传输并在另一台机器上使用,等等.

另一个含义涉及串行与并行执行 - 即确保一次只执行一个执行线程.例如,如果您要读取,修改和编写变量,则需要确保一个线程在另一个线程启动之前完成读取,修改和写入序列.