将数据进行二进制序列化的方法和系统与流程

文档序号:15257680发布日期:2018-08-24 20:53阅读:336来源:国知局

本发明涉及数据序列化领域,具体涉及一种将数据进行二进制序列化的方法和系统。



背景技术:

在电信业务的管理过程中,需要将业务数据进行序列化,以实现业务数据的持久化存储或网络间传输。业务数据发生改变时(例如增减数据中的字段),由于改变后的数据格式与原数据格式不同,因此对发生改变的业务数据进行序列化时,会因无法识别格式不同的业务数据而无法进行。此时只有将整个业务数据采用统一个格式重新生成,才能进行序列化,而重新生成整个业务数据的工作效率较低,不便于人们使用。



技术实现要素:

针对现有技术中存在的缺陷,本发明解决的技术问题为:如何在不重新生成业务数据的情况下,对发生改变后的业务数据进行序列化;本发明的工作效率较高,便于人们使用。

为达到以上目的,本发明提供的将数据进行二进制序列化的方法,包括以下步骤:

s1:创建数据块的通用序列化格式,转到s2;

s2:将需要进行序列化的业务数据块,作为格式转换数据块,转到s3;

s3:判断格式转换数据块中是否存在子数据块,若是,转到s4;否则转到s5;

s4:遍历格式转换数据块中的所有子数据块,将遍历到的子数据块作为格式转换数据块后,继续执行s3;

s5:按照s1中的通用序列化格式,对格式转换数据块进行转换,得到通用序列化数据块,转到s6;

s6:判断是否存在通用序列化数据块的母数据块,若是,转到s7,否则确认业务数据块的格式转换完毕;

s7:将通用序列化数据块与母数据块中对应的子数据块进行替换,当母数据块中的所有子数据块均替换为通用序列化数据块后,将当前母数据块作为通用序列化数据块,继续执行s6。

在上述技术方案的基础上,s1中所述通用序列化格式包括数据块长度、字段个数、字段掩码和数据块中的数据。

在上述技术方案的基础上,所述数据块长度位于数据块的表头,字段个数占一个字节,字段掩码表示对应字段是否有效。

在上述技术方案的基础上,s5的流程包括:获取格式转换数据块的数据块长度、字段个数、字段掩码和数据块中的数据,将数据块长度写入数据块头部,在数据块长度后依次写入字段个数、字段掩码和数据块中的数据。

在上述技术方案的基础上,s6中所述确认业务数据块的格式转换完毕之后,还包括以下步骤:对业务数据块进行序列化。

本发明提供的实现上述方法的将数据进行二进制序列化的系统,包括通用序列化格式创建模块和数据块格式转换模块;

通用序列化格式创建模块用于:创建数据块的通用序列化格式;

数据块格式转换模块用于:

数据块格式转换01:将需要进行序列化的业务数据块,作为格式转换数据块,进入数据块格式转换01流程;

数据块格式转换02:判断格式转换数据块中是否存在子数据块,若是,进入数据块格式转换03流程;否则进入数据块格式转换04流程;

数据块格式转换03:遍历格式转换数据块中的所有子数据块,将遍历到的子数据块作为格式转换数据块后,继续执行数据块格式转换02流程;

数据块格式转换04:按照通用序列化格式创建模块创建的通用序列化格式,对格式转换数据块进行转换,得到通用序列化数据块,执行数据块格式转换05流程;

数据块格式转换05:判断是否存在通用序列化数据块的母数据块,若是,执行数据块格式转换06流程,否则确认业务数据块的格式转换完毕;

执行数据块格式转换06:将通用序列化数据块与母数据块中对应的子数据块进行替换,当母数据块中的所有子数据块均替换为通用序列化数据块后,将当前母数据块作为通用序列化数据块,继续执行数据块格式转换05流程。

在上述技术方案的基础上,所述通用序列化格式创建模块创建的通用序列化格式,包括数据块长度、字段个数、字段掩码和数据块中的数据。

在上述技术方案的基础上,所述数据块长度位于数据块的表头,字段个数占一个字节,字段掩码表示对应字段是否有效。

在上述技术方案的基础上,数据块格式转换04的流程包括:获取格式转换数据块的数据块长度、字段个数、字段掩码和数据块中的数据,将数据块长度写入数据块头部,在数据块长度后依次写入字段个数、字段掩码和数据块中的数据。

在上述技术方案的基础上,该系统还包括数据块序列化模块,其用于:在数据块格式转换模块确认业务数据块的格式转换完毕后,对业务数据块进行序列化。

与现有技术相比,本发明的优点在于:

本发明能够为需要进行序列化的业务数据块,创建统一的通用序列化格式,在此基础上,本发明能够将业务数据块中所有嵌套的子数据块,根据通用序列化格式转化为格式统一的可识别数据块,嵌套的层次数目没有限制。与现有技术中序列化时无法识别格式不同的业务数据,本发明的可识别数据块的格式统一,能够在序列化时被识别。因此,本发明能够不重新生成业务数据的情况下,对发生改变后的业务数据进行序列化,进而显著提高了工作效率,便于人们使用。

附图说明

图1为本发明实施例中的通用序列化格式示意图;

图2为本发明实施例中的将数据进行二进制序列化的方法的流程图;

图3为本发明实施例中嵌套有子数据块的树型结构示意图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例中的数据包括至少1个数据块,数据块还可以为嵌套结构,即1个数据块中又含有子数据块,依次类推。在此基础上,参见图2所示,本发明实施例中的将数据进行二进制序列化的方法,包括以下步骤:

s1:创建数据块的通用序列化格式,通用序列化格式包括数据块长度、字段个数、字段掩码和数据块中的数据,转到s2。

参见图1所示,s1通用序列化格式中的数据块长度位于数据块的表头,字段个数占一个字节,因此最多支持255个字段;字段掩码用一位表示一个字段,表示该字段是否有效,废弃的字段仍占用字段掩码位置,掩码标0表示无效,标1标识有效。为了便于扩展,通用序列化格式的尾部还包括扩展掩码,进而使得字段扩展往后追加,而不可往前插入,扩展掩码预留位数默认2字节即支持16个字段,如字段超过16个,会扩展掩码字节,追加到数据块的尾部。

s2:将需要进行序列化的业务数据块,作为格式转换数据块,转到s3。

s3:判断格式转换数据块中是否存在子数据块(即数据块为嵌套结构,下层有嵌套有子数据块),若是,则证明该数据块中存在需要转化格式才能进行序列化的子数据块,转到s4;否则证明该数据块的字段都是基础字段,该数据块不需要转化格式即可进行序列化,此时转到s5。

s3中不需要对都是基础字段的数据块转化格式即可进行序列化的原因为:无论业务数据是否发生改变,都不会改变基础字段的格式,因此不需要对基础字段进行处理,本领域普通技术人员根据业务数据的类型,即可得知哪些字段为基础字段。

s4:遍历格式转换数据块中的所有子数据块,将遍历到的子数据块作为格式转换数据块后,继续执行s3。

s5:按照s1中的通用序列化格式,对格式转换数据块进行转换,得到通用序列化数据块,转到s6。

参见图1所示,s5的流程包括:获取格式转换数据块的数据块长度、字段个数、字段掩码和数据块中的数据,将数据块长度写入数据块头部,在数据块长度后依次写入字段个数、字段掩码和数据块中的数据。

s6:判断是否存在通用序列化数据块的母数据块(即上层数据块),若是,转到s7,否则确认业务数据块的格式转换完毕,转到s8。

s7:将通用序列化数据块与母数据块中对应的子数据块进行替换,当母数据块中的所有子数据块均替换为通用序列化数据块后,将当前母数据块作为通用序列化数据块,继续执行s6。

s8:对业务数据块进行序列化。

为了便于公众理解,现将s2至s7的流程以1个树型结构进行说明。

参见图3所示,业务数据块即为根节点,上层是没有母数据块的,业务数据块中包括子数据块1和2、以及其余的基础字段1,此时需要遍历并转化子数据块1和2的格式。

子数据块2中仅含有基础字段2和3,则子数据块2不需要继续遍历,不需要遍历的节点为叶子节点。

子数据块1中又含有子数据块3和4,含有子数据块且上层有母数据块(业务数据块)的节点为中间节点(即子数据块1为数据块3和4的母数据块,业务数据块为子数据块1的母数据块),此时需要遍历并转化子数据块3和4的格式。

子数据块3和4均仅含有基础字段(基础字段5、6、7和8),即子数据块3和4为不需要继续遍历的叶子节点。

根据通用序列化格式对子数据块3和4进行转换后,将转化后的子数据块3和4填充至子数据块1的相应部分。

根据通用序列化格式对数据块1和2进行转化后(此时数据块1中的所有子数据块已经统一了格式),填充至业务数据块的相应部分。

本发明实施例中的实现上述方法的将数据进行二进制序列化的系统,该系统包括通用序列化格式创建模块、数据块格式转换模块和数据块序列化模块。

通用序列化格式创建模块用于:创建数据块的通用序列化格式;通用序列化格式,包括数据块长度、字段个数、字段掩码和数据块中的数据;数据块长度位于数据块的表头,字段个数占一个字节,字段掩码表示对应字段是否有效。

数据块格式转换模块用于:

数据块格式转换01:将需要进行序列化的业务数据块,作为格式转换数据块,进入数据块格式转换01流程;

数据块格式转换02:判断格式转换数据块中是否存在子数据块,若是,进入数据块格式转换03流程;否则进入数据块格式转换04流程;

数据块格式转换03:遍历格式转换数据块中的所有子数据块,将遍历到的子数据块作为格式转换数据块后,继续执行数据块格式转换02流程;

数据块格式转换04:按照通用序列化格式创建模块创建的通用序列化格式,对格式转换数据块进行转换(获取格式转换数据块的数据块长度、字段个数、字段掩码和数据块中的数据,将数据块长度写入数据块头部,在数据块长度后依次写入字段个数、字段掩码和数据块中的数据),得到通用序列化数据块,执行数据块格式转换05流程;

数据块格式转换05:判断是否存在通用序列化数据块的母数据块,若是,执行数据块格式转换06流程,否则确认业务数据块的格式转换完毕;

执行数据块格式转换06:将通用序列化数据块与母数据块中对应的子数据块进行替换,当母数据块中的所有子数据块均替换为通用序列化数据块后,将当前母数据块作为通用序列化数据块,继续执行数据块格式转换05流程。

数据块序列化模块用于:在数据块格式转换模块确认业务数据块的格式转换完毕后,对业务数据块进行序列化。

需要说明的是:本发明实施例提供的系统在进行模块间通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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