对象序列化的方法及装置与流程

文档序号:12664257阅读:249来源:国知局
对象序列化的方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种对象序列化的方法及装置。



背景技术:

序列化(Serialization)是将对象的状态信息转换为可以存储或传输形式的过程。在将对象序列化期间,将对象的当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

在程序开发中经常需要对某些对象序列化和反序列化,目前常用的序列化反序列化方法有json序列化反序列化、xml序列化反序列化和二进制序列化反序列化等,但是它们都有一些限制或使用上的不方便。如json序列化反序列化和xml序列化反序列化在反序列化的时候需要指定反序列化对象的类型,二进制序列化反序列化需要实现指定的接口。



技术实现要素:

有鉴于此,本发明提供一种对象序列化的方法及装置,主要目的在于解决对序列化对象类型的限制,以及在反序列化时需显示指定反序列对象类型的问题。

为达到上述目的,本发明提供如下的技术方案:

一方面,本发明提供一种对象序列化的方法,包括:

当需要获取序列化的给定对象时,获取所述给定对象对应的上下文对象的序列化内容;所述上下文对象为序列化所述给定对象时创建的对象,其至少包含所述给定对象的类型和所述给定对象的序列化内容;

对所述上下文对象的序列化内容进行反序列化得到所述上下文对象;

解析所述上下文对象,获取所述给定对象的类型和所述给定对象的序列化内容;

根据所述给定对象的类型对所述给定对象的序列化内容进行反序列化 得到所述给定对象。

另一方面,本发明还提供一种对象序列化的装置,包括:

获取单元,用于当需要获取序列化的给定对象时,获取所述给定对象对应的上下文对象的序列化内容;所述上下文对象为序列化所述给定对象时创建的对象,其至少包含所述给定对象的类型和所述给定对象的序列化内容;

第一序列化反序列化单元,用于对所述上下文对象的序列化内容进行反序列化得到所述上下文对象;

解析单元,用于解析所述上下文对象,获取所述给定对象的类型和所述给定对象的序列化内容;

第二序列化反序列化单元,用于根据所述给定对象的类型对所述给定对象的序列化内容进行反序列化得到所述给定对象。

本发明提供的对象序列化的方法及装置,当需要从序列化的内容中获取对象时,只需要从序列化给对象时创建的上下文对象中获取对象的类型和序列化后的对象内容,就可以根据所述给定对象的类型对所述序列化后的对象内容进行反序列化得到所述给定对象。与现有技术相比,由于创建的序列化上下文对象中包含序列化反序列化所需要的类型信息,不需要再单独提供类型信息,对要进行序列化的对象没有任何限制要求,同时在反序列化时也无需指定类型。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明实施例中一种对象序列化的方法流程图;

图2示出了本发明实施例中一种对象序列化的装置组成框图;

图3示出了本发明实施例中另一种对象序列化的装置组成框图;

图4示出了本发明实施例中另一种对象序列化的装置组成框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明实施例提供一种对象序列化的方法,如图1所示,包括:

101、当需要获取序列化的给定对象时,获取所述给定对象对应的上下文对象的序列化内容;所述上下文对象为序列化所述给定对象时创建的对象,其至少包含所述给定对象的类型和所述给定对象的序列化内容。

本发明实施例中,为了不达到在反序列化过程中无需额外提供给定对象的类型,需要在对给定对象进行序列化时,创建包含给定对象类型的上下文对象,并将该创建的上下文对象进行序列化,得到所述上下文对象的序列化内容,以便在获取序列化的给定对象时使用。其中,创建给定对象的上下文对象可以采用但不局限于以下的方法实现,该方法包括:

1、获取所述给定对象的类型和所述给定对象序列化后的序列化内容。

其中,在获取给定对象的类型时,可以通过解析该对象的定义字段,或者该对象的对象值获取,具体的本发明实施例在此不进行限制。

获取所述给定对象序列化后的序列化内容,可以通过但不局限于直接对所述给定对象进行序列化得到所述给定对象的序列化内容,也可以获取已经序列化生成的所述给定对象的序列化内容。其中,在对该给定对象进行序列化时,可以采用但不局限于通过json序列化反序列化或者xml序列化反序列化对所述给定对象进行序列化得到所述给定对象序列化后的对象内容。关于该json序列化反序列化或者xml序列化反序列化的相关描述,本发明实施例可以参考现有技术中的相关描述,此处将不再赘述。

2、创建序列化上下文对象,将所述给定对象的类型和序列化内容设置在所述序列化上下文对象中。

其中,创建所述给定对象的上下文对象在具体实施时,可以根据用户的编程习惯具体设置创建的该上下文对象的名称;以及设置在该对象中的给定对象的类型和序列化内容的名称及类型也可以根据编程习惯具体设置,本发明实施例此处不进行限制。例如,设置所述给定对象的序列化内容为文本字符串类型等。

102、对所述上下文对象的序列化内容进行反序列化得到所述上下文对象。

其中,本发明实施例中在对所述上下文对象的序列化内容进行反序列化时,需要采用与对该内容进行序列化时相同的序列化反序列化方法,例如,当通过二进制序列化反序列化对所述序列化上下文对象进行序列化时,本步骤中,对所述上下文对象的序列化内容进行反序列化也采用二进制序列化反序列化。在具体实施时,本发明实施例对此也不进行限制。具体实施时,也可以采用各自制定的序列化反序列化方法实现。

103、解析所述上下文对象,获取所述给定对象的类型和所述给定对象的序列化内容。

104、根据所述给定对象的类型对所述给定对象的序列化内容进行反序列化得到所述给定对象。

需要说明的是,本发明实施例中对所述序列化后的对象内容进行反序列化得到所述给定对象的方法,可以同对该给定对象进行序列化时采用的方法相同,例如,当通过json序列化反序列化对所述给定对象进行序列化得到所述给定对象序列化后的对象内容时,本步骤中通过json序列化反序列化根据所述给定对象的类型对所述序列化后的对象内容进行反序列化得到所述给定对象。

本发明实施例中,在对对象进行序列化时,创建一个至少包含给定对象的类型和序列化后的对象内容的序列化上下文对象,并对该序列化上下文对象进行序列化。当需要从序列化的内容中获取对象时,只需要从序列化上下文对象中获取对象的类型和序列化后的对象内容的,就可以根据所述给定对象的类型对所述序列化后的对象内容进行反序列化得到所述给定对象。与现有技术相比,由于创建的序列化上下文对象中包含序列化反序 列化所需要的类型信息,不需要再单独提供类型信息,对要进行序列化的对象没有任何限制要求,同时在反序列化时也无需指定类型。

基于上述方法实施例,本发明实施例提供一种对象序列化的装置,如图2所示,该装置包括:

获取单元21,用于当需要获取序列化的给定对象时,获取所述给定对象对应的上下文对象的序列化内容;所述上下文对象为序列化所述给定对象时创建的对象,其至少包含所述给定对象的类型和所述给定对象的序列化内容。

第一序列化反序列化单元22,用于对所述上下文对象的序列化内容进行反序列化得到所述上下文对象。其中。本发明实施例中,第一序列化反序列化单元22对所述上下文对象的序列化内容进行反序列化,可以采用对所述上下文对象进行序列化相同的方法,例如当通过二进制序列化反序列化对所述上下文对象进行序列化时,本发明实施例可以通过二进制序列化反序列化方法反序列化所述上下文对象的序列化内容,获取所述上下文对象。

解析单元23,用于解析所述上下文对象,获取所述给定对象的类型和所述给定对象的序列化内容。

第二序列化反序列化单元24,用于根据所述给定对象的类型对所述给定对象的序列化内容进行反序列化得到所述给定对象。

进一步的,如图3所示,该装置还包括:

创建单元25,用于在获取所述给定对象对应的上下文对象的序列化内容之前,创建所述给定对象的上下文对象。

所述第一序列化反序列化单元22还用于,对所述给定对象的上下文对象进行序列化得到所述上下文对象的序列化内容。

进一步的,如图4所示,所述创建单元25包括:

获取模块251,用于获取所述给定对象的类型和序列化内容。

创建模块252,用于创建序列化上下文对象,将所述给定对象的类型和序列化内容设置在所述序列化上下文对象中。

进一步的,所述第二序列化反序列化单元24还用于,在所述创建单元 25创建序列化上下文对象之前,对所述给定对象进行序列化得到所述给定对象的序列化内容。其中,所述第二序列化反序列化单元24对所述给定对象进行序列化得到所述给定对象的序列化内容时,具体可以用于但不局限于通过json序列化反序列化或者xml序列化反序列化对所述给定对象进行序列化。

需要说明的是,本发明实施例中各功能单元及功能模块的其他描述,可以参考方法实施例中的相关描述,本发明实施例此处将不再赘述。

本发明实施例中,在对对象进行序列化时,创建一个至少包含给定对象的类型和序列化后的对象内容的序列化上下文对象,并对该序列化上下文对象进行序列化。当需要从序列化的内容中获取对象时,只需要从序列化上下文对象中获取对象的类型和序列化后的对象内容的,就可以根据所述给定对象的类型对所述序列化后的对象内容进行反序列化得到所述给定对象。与现有技术相比,由于创建的序列化上下文对象中包含序列化反序列化所需要的类型信息,不需要再单独提供类型信息,对要进行序列化的对象没有任何限制要求,同时在反序列化时也无需指定类型。

所述对象序列化的装置包括处理器和存储器,上述获取单元、第一序列化反序列化单元、解析单元、第二序列化反序列化单元和创建单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决对序列化对象类型的限制,以及在反序列化时需显示指定反序列对象类型的问题。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:当需要获取序列化的给定对象时,获取所述给定对象对应的上下文对象的序列化内容;所述上下文对象为序列化所述给定对象时创建的对象,其至少包含所述给定对象的类型 和所述给定对象的序列化内容;对所述上下文对象的序列化内容进行反序列化得到所述上下文对象;解析所述上下文对象,获取所述给定对象的类型和所述给定对象的序列化内容;根据所述给定对象的类型对所述给定对象的序列化内容进行反序列化得到所述给定对象。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1