CN106777292A - 一种数据序列化方法及装置 - Google Patents
一种数据序列化方法及装置 Download PDFInfo
- Publication number
- CN106777292A CN106777292A CN201611250046.4A CN201611250046A CN106777292A CN 106777292 A CN106777292 A CN 106777292A CN 201611250046 A CN201611250046 A CN 201611250046A CN 106777292 A CN106777292 A CN 106777292A
- Authority
- CN
- China
- Prior art keywords
- field
- name
- field name
- byte sequence
- byte
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据序列化方法及装置,该方法包括:获取原数据;针对预设数据模板中的每个字段名,从所述原数据中获取该字段名对应的字段内容,所述预设数据模板中预先存储了字段名、数据类型以及字段编号的关联关系,所述数据类型为字段内容的数据类型;按照该字段名关联的数据类型对应的序列化方式,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列;按照字段编号由小到大的顺序,将得到的各个字段名所属的字段对应的字节序列拼接成一个字节序列,作为所述原数据对应的序列化数据。本发明可以有效地减少数据占用空间,提高数据传输以及磁盘读写的效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据序列化方法及装置。
背景技术
随着“大数据时代”的到来,越来越多的数据需要被整合、加载到数据仓库中,以成为数据分析处理以及数据挖掘的基础。在整个构建数据仓库的过程中,数据从采集、解析到入库,要经过一套完整的流程。数据经采集器采集并传输至解析程序中,解析程序将原始数据转换成系统可识别的数据,并将其输入至缓存中。之后,入库程序从缓存中获得转换后的数据,并将数据转换成符合库表结构的数据存入数据仓库,从而完成入库操作。
目前,常用JSON数据格式对原数据进行数据转换,得到序列化后的数据。但是这些数据转换方式在应用中存在以下问题:
针对JSON数据格式的转换方式,JSON数据格式是一种以文本格式出现的数据格式,在原数据中字段较多的场景下,会出现编解码难度大且序列化后数据占用较大存储空间的问题,这就会增加网络传输以及磁盘IO的压力。
发明内容
本发明提供一种数据序列化方法,用于解决现有技术中数据转换方式在原数据中字段较多的场景下,所出现的编解码难度大且序列化后数据占用较大存储空间的问题,进而降低网络传输以及磁盘IO的压力。
一种数据序列化方法,包括:
获取原数据,所述原数据包括至少一个字段,每个字段包括字段名以及字段名对应的字段内容;
针对预设数据模板中的每个字段名,从所述原数据中获取该字段名对应的字段内容,所述预设数据模板中预先存储了字段名、数据类型以及字段编号的关联关系,所述数据类型为字段内容的数据类型;
按照该字段名关联的数据类型对应的序列化方式,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列;
按照字段编号由小到大的顺序,将得到的各个字段名所属的字段对应的字节序列拼接成一个字节序列,作为所述原数据对应的序列化数据。
可选地,所述方法中所述数据类型包括整型、字符串型、双精度浮点型、长整型。
可选地,所述方法中,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,具体包括:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容在预设范围内,利用变字节长度的编码方式,分别对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名对应的字段内容对应的字节序列以及该字段名关联的字段编号对应的字节序列,所述预设范围为[0,228);以及
利用所述变字节长度的编码方式,对用于表示所述变字节长度的编码方式的标识进行序列化,得到所述变字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述变字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述变字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述方法,还包括:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容不在预设范围内,利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;以及
利用所述变字节长度的编码方式,分别对该字段名关联的字段编号以及用于表示所述固定字节长度的编码方式的标识进行序列化,得到该字段名关联的字段编号对应的字节序列以及所述固定字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述固定字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述固定字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述方法中,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,具体包括:
若该字段名关联的数据类型为字符串型,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
确定该字段名对应的字段内容对应的字节序列所占的字节长度;
利用变字节长度的编码方式,对所述字节长度以及该字段名关联的字段编号进行序列化,得到所述字节长度对应的字节序列以及该字段名关联的字段编号对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述字节长度对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述字节长度对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述方法中,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,具体包括:
若该字段名关联的数据类型为双精度浮点型或长整型,利用变字节长度的编码方式,对该字段名关联的字段编号进行序列化,得到该字段名关联的字段编号对应的字节序列;以及
利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
将该字段名关联的字段编号对应的字节序列与该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,该字段名关联的字段编号对应的字节序列位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述方法,还包括:
按照所述预设数据模板中各个字段编号由小到大的顺序,针对所述预设数据模板中的每个字段编号,执行以下反序列化步骤:
根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化。
本发明还提供一种数据序列化装置,包括:
第一获取模块,用于获取原数据,所述原数据包括至少一个字段,每个字段包括字段名以及字段名对应的字段内容;
第二获取模块,用于针对预设数据模板中的每个字段名,从所述原数据中获取该字段名对应的字段内容,所述预设数据模板中预先存储了字段名、数据类型以及字段编号的关联关系,所述数据类型为字段内容的数据类型;
序列化模块,用于按照该字段名关联的数据类型对应的序列化方式,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列;
拼接模块,用于按照字段编号由小到大的顺序,将得到的各个字段名所属的字段对应的字节序列拼接成一个字节序列,作为所述原数据对应的序列化数据。
可选地,所述装置中,所述数据类型包括整型、字符串型、双精度浮点型、长整型。
可选地,所述装置中,所述序列化模块,具体用于:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容在预设范围内,利用变字节长度的编码方式,分别对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名对应的字段内容对应的字节序列以及该字段名关联的字段编号对应的字节序列,所述预设范围为[0,228);以及
利用所述变字节长度的编码方式,对用于表示所述变字节长度的编码方式的标识进行序列化,得到所述变字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述变字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述变字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述装置中,所述序列化模块,还用于:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容不在预设范围内,利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;以及
利用所述变字节长度的编码方式,分别对该字段名关联的字段编号以及用于表示所述固定字节长度的编码方式的标识进行序列化,得到该字段名关联的字段编号对应的字节序列以及所述固定字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述固定字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述固定字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述装置中,所述序列化模块,具体用于:
若该字段名关联的数据类型为字符串型,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
确定该字段名对应的字段内容对应的字节序列所占的字节长度;
利用变字节长度的编码方式,对所述字节长度以及该字段名关联的字段编号进行序列化,得到所述字节长度对应的字节序列以及该字段名关联的字段编号对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述字节长度对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述字节长度对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述装置中,所述序列化模块,具体用于:
若该字段名关联的数据类型为双精度浮点型或长整型,利用变字节长度的编码方式,对该字段名关联的字段编号进行序列化,得到该字段名关联的字段编号对应的字节序列;以及
利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
将该字段名关联的字段编号对应的字节序列与该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,该字段名关联的字段编号对应的字节序列位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述装置,还包括:
反序列化模块,用于按照所述预设数据模板中各个字段编号由小到大的顺序,针对所述预设数据模板中的每个字段编号,执行以下反序列化步骤:
根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化。
利用本发明提供的数据序列化方法及装置,具有以下有益效果:得到的序列化后的数据以二进制字节序列的形式呈现,可以有效地减少数据占用空间,数据传输以及磁盘读写的效率也可得到一定程度的提升,数据模板中存储的关联关系复杂度低,无嵌套格式,降低了数据序列化的难度。此外,数据模板中仅存储字段名、数据类型和字段编号的关联关系,可根据不同的原数据生成不同的数据模板,若数据模板需要修改,仅涉及关联关系的修改,并可通过读取配置文件或其他数据中间件来生成数据模版,不涉及代码修改以及重新编译生成数据模板的过程,从而能够较灵活的设置数据模板,进而能够在一定程度上提高数据序列化的效率。
附图说明
图1为本发明实施例提供的数据序列化方法的流程示意图;
图2为本发明一实施例提供的得到字段名所属的字段对应的字节序列的方法流程意图;
图3为本发明另一实施例提供的得到字段名所属的字段对应的字节序列的方法流程意图;
图4为本发明又一实施例提供的得到字段名所属的字段对应的字节序列的方法流程意图;
图5为本发明实施例提供的得到的序列化后数据的格式示意图;
图6为本发明实施例提供的数据反序列化方法的流程示意图;
图7为本发明实施例提供的数据序列化装置结构示意图。
具体实施方式
下面结合附图和实施例对本发明提供的数据序列化方法进行更详细地说明。
本发明实施例提供一种数据序列化方法,如图1所示,包括:
步骤101,获取原数据,所述原数据包括至少一个字段,每个字段包括字段名以及字段名对应的字段内容。
具体的,原数据包括至少一个字段,每个字段包括字段名和字段内容,字段名与字段内容对应,每个字段以键值(Key-Value)对的形式存储,其中,(Key,Value)=(字段名,字段内容),原数据中不同字段名对应不同的字段内容,原数据中包括至少一个键值对,即原数据中包括至少一个字段名以及各个字段名对应的字段内容。
步骤102,针对预设数据模板中的每个字段名,从所述原数据中获取该字段名对应的字段内容。
其中,所述预设数据模板中预先存储了字段名、数据类型以及字段编号的关联关系,所述数据类型为字段内容的数据类型。
具体的,预先存储原数据对应的数据模板,即预设数据模板,该预设数据模板中存储了原数据中预进行序列化的字段的字段名,以及各个字段名关联的数据类型和字段编号。其中,预设数据模板中的字段名、数据类型和字段编号的关联关系也可以键值对的形式存储,此时,键值对(Key,Value)=(字段编号,(字段名,数据类型)),其中的数据类型具体指与该数据类型关联的字段名对应的原数据中的字段内容的数据类型,不同字段名关联的字段编号不同。
具体实施时,可针对预设数据模板中的每个字段名,判断所述原数据中是否包含该字段名,如果是,从原数据中获取该字段名对应的字段内容。
步骤103,按照该字段名关联的数据类型对应的序列化方式,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列。
具体的,根据预设数据模板中字段名、数据类型以及字段编号的关联关系,确定该字段名关联的数据类型和字段编号。
本发明实施例中,从原数据中获取预设数据模板中的每个字段名对应的字段内容,并根据数据模板中各个字段名关联的数据类型对应的序列化方式,对相应字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,即得到原数据中该字段名所属的字段对应的序列化后的数据。
步骤104,按照字段编号由小到大的顺序,将得到的各个字段名所属的字段对应的字节序列拼接成一个字节序列,作为所述原数据对应的序列化数据。
具体的,针对数据模板中每个字段名所属的字段对应的字节序列,按照字段名关联的字段编号由小到大的顺序,将各个字段名所属的字段对应的字节序列拼接成一个字节序列,从而得到原数据中预进行序列化的字段对应的序列化数据。
本发明实施例,得到的序列化后的数据以二进制字节序列的形式呈现,可以有效地减少数据占用空间,数据传输以及磁盘读写的效率也可得到一定程度的提升,数据模板中存储的关联关系复杂度低,无嵌套格式,降低了数据序列化的难度。
此外,本发明实施例,数据模板中仅存储字段名、数据类型和字段编号的关联关系,可根据不同的原数据生成不同的数据模板,若数据模板需要修改,仅涉及关联关系的修改,并可通过读取配置文件或其他数据中间件来生成数据模版,不涉及代码修改以及重新编译生成数据模板的过程,从而能够较灵活的设置数据模板,进而能够在一定程度上提高数据序列化的效率。
优选地,数据类型包括整型(int)、字符串型(string)、双精度浮点型(double)、长整型(long)。
具体的,字段名对应的字段内容的数据类型可能多种多样,本发明实施例预先根据原数据中预进行序列化的字段的字段内容的数据类型以及预进行序列化的字段的字段名,保存字段名与数据类型的关联关系。
作为一种实施方式,针对预设数据模板中的各个字段名,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,如图2所示,具体包括:
步骤201,若该字段名关联的数据类型为整型,判断该字段名对应的字段内容是否在预设范围内,如果是,执行步骤202,否则,执行步骤205。
其中,预设范围为[0-228)。
步骤202,利用变字节长度的编码方式,分别对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名对应的字段内容对应的字节序列以及该字段名关联的字段编号对应的字节序列。
具体的,若该字段名关联的数据类型为整型且该字段名对应的字段内容在[0-228)范围内,执行步骤202。
其中,变字节长度的编码方式可以为Base 128Varints编码(简称Varints编码),也可以为其它变字节长度的编码方式,这里不做限定。其中,Varints编码对于数值较小的整型数据有很好的压缩效果,不同的整型数据的数值范围内的数值在利用Varints编码方式序列化后所占的字节长度如表一所示。
表一
数值范围 | 序列化后所占字节数 |
[0,27) | 1 |
[27,214) | 2 |
[214,221) | 3 |
[221,228) | 4 |
[228,231) | 5 |
本发明实施例中,针对数值范围在[0-228)范围内的整型数据,采用变字节长度的编码方式进行序列化。
步骤203,利用所述变字节长度的编码方式,对用于表示所述变字节长度的编码方式的标识进行序列化,得到所述变字节长度的编码方式的标识对应的字节序列。
具体的,可设置用于表示变字节长度的编码方式的标识为1,对变字节长度的编码方式的标识进行序列化后,可在进行相应的反序列化时,获知应该采用何种解码方式对该字段名所属的字段对应的字节序列进行反序列化,从而得到原数据该字段名对应的字段内容。
由于字段编号以及标识对应的数值较小,一般均在[0-228)范围内,因此,本发明实施例采用变字节长度的编码方式分别对字段编号以及标识进行序列化,可在一定程度上减小序列化后数据所占的空间。
步骤204,将该字段名关联的字段编号对应的字节序列、所述变字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列。
其中,得到的该字段名所属的字段对应的字节序列中,所述变字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
具体的,将该字段名所属的字段对应的字节序列进行存储,存储时该字段名所属的字段对应的字节序列的存储格式为:变字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前,其中,该字段名关联的字段编号对应的字节序列、变字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列连续存储。
步骤205,利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列。
具体的,若该字段名关联的数据类型为整型且该字段名对应的字段内容不在[0-228)范围内,执行步骤205。其中,固定字节长度的编码方式为按字节取出,然后输出一个长度为4的字节数组的编码方式,具体的编码过程为现有技术,这里不做详述。现有技术中,整型数据是一种4字节的定长数据类型,本步骤中,针对不在[0-228)范围内的整型数据,采用现有的固定长度的编码方式进行序列化即可。
步骤206,利用所述变字节长度的编码方式,分别对该字段名关联的字段编号以及用于表示所述固定字节长度的编码方式的标识进行序列化,得到该字段名关联的字段编号对应的字节序列以及所述固定字节长度的编码方式的标识对应的字节序列。
具体的,可设置用于表示固定字节长度的编码方式的标识为0,对固定字节长度的编码方式的标识进行序列化后,可在进行相应的反序列化时,获知应该采用何种解码方式对该字段名所属的字段对应的字节序列进行反序列化,从而得到原数据该字段名对应的字段内容。
由于字段编号以及标识对应的数值较小,一般均在[0-228)范围内,因此,本发明实施例采用变字节长度的编码方式分别对字段编号以及标识进行序列化,可在一定程度上减小序列化后数据所占的空间。
步骤207,将该字段名关联的字段编号对应的字节序列、所述固定字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列。
其中,得到的该字段名所属的字段对应的字节序列中,所述固定字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
具体的,将该字段名所属的字段对应的字节序列进行存储,存储时该字段名所属的字段对应的字节序列的存储格式为:固定字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前,其中,该字段名关联的字段编号对应的字节序列、固定字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列连续存储。
本发明实施例,针对不同数值范围内的整型数据进行不同形式的序列化,可以有效地减少数据占用空间,数据传输以及磁盘读写的效率也可得到一定程度的提升,序列化后的数据之间关系复杂度低,提高了数据序列化的效率。
作为另一种实施方式,针对预设数据模板中的各个字段名,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,如图3所示,具体包括:
步骤301,若该字段名关联的数据类型为字符串型,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列。
现有技术中,字符串型的数据为一种不定长的数据类型,因此对字符串型的字段内容进行序列化后,各个字段内容对应的字节序列所占的字节数可能相同也可能不同,本步骤中,可按照现有的对字符串型数据进行序列化的方式进行序列化,具体序列化的实施过程这里不做详述。
步骤302,确定该字段名对应的字段内容对应的字节序列所占的字节长度。
具体的,由于各个字段内容对应的字节序列所占的字节数可能相同也可能不同,因此需要记录各字段名对应的字段内容对应的字节序列所占的字节长度,以便在反序列化操作时能够准确的寻址到相应的字段内容。
步骤303,利用变字节长度的编码方式,对所述字节长度以及该字段名关联的字段编号进行序列化,得到所述字节长度对应的字节序列以及该字段名关联的字段编号对应的字节序列。
关于变字节长度的编码方式的解释以及有益效果说明详见上文,这里不做赘述。
步骤304,将该字段名关联的字段编号对应的字节序列、所述字节长度对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列。
其中,得到的该字段名所属的字段对应的字节序列中,所述字节长度对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
具体的,将该字段名所属的字段对应的字节序列进行存储,存储时该字段名所属的字段对应的字节序列的存储格式为:字节长度对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前,其中,该字段名关联的字段编号对应的字节序列、字节长度对应的字节序列以及该字段名对应的字段内容对应的字节序列连续存储。
作为又一种实施方式,针对预设数据模板中的各个字段名,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,如图4所示,具体包括:
步骤401,若该字段名关联的数据类型为双精度浮点型或长整型,利用变字节长度的编码方式,对该字段名关联的字段编号进行序列化,得到该字段名关联的字段编号对应的字节序列。
具体的,关于变字节长度的编码方式的解释说明以及有益效果详见上文,这里不做赘述。
步骤402,利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列。
现有技术中,双精度浮点型或长整型都是8字节的定长数据类型,本步骤中针对双精度浮点型或长整型的序列化方式为按字节取出后输出到一个长度为8的字节数组中,具体的实施过程为现有技术,这里不做详述。
步骤403,将该字段名关联的字段编号对应的字节序列与该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列。
其中,得到的该字段名所属的字段对应的字节序列中,该字段名关联的字段编号对应的字节序列位于该字段名对应的字段内容对应的字节序列之前。
具体的,将该字段名所属的字段对应的字节序列进行存储,存储时该字段名所属的字段对应的字节序列的存储格式为:该字段名关联的字段编号对应的字节序列位于该字段名对应的字段内容对应的字节序列之前,且,该字段名关联的字段编号对应的字节序列与该字段名对应的字段内容对应的字节序列连续存储。
发明人利用JSON数据格式对实验用原数据进行了数据转换,并利用本发明实施例对相同的实验用原数据进行了序列化,实验用原数据中包含47个字段,字段包括字段名和字段名对应的字段内容,得到的结果中,利用JSON数据格式得到的转换后数据的长度为1407个字节,利用本发明实施例提供的数据序列化方式得到的序列化数据的长度为325个字节,由此可见,利用本发明实施例提供的数据序列化方法能够有效减少转换后数据的占用空间,其中,实验用原数据中的字段内容的数据类型包括双精度浮点型、整型、字符串型以及长整型。
需要说明的是,本发明实施例的原数据中的字段内容的数据类型包括双精度浮点型、整型、字符串型、长整型中的至少一种。
下面举例说明利用本发明实施例得到的原数据对应的序列化数据格式,假设原数据如表二所示,数据模板如表三所示:
表二
Key(字段名) | Value(字段内容) |
姓名 | 张三 |
成绩 | 90 |
身高 | 199 |
表三
Key(字段编号) | Value(字段名,数据类型) |
1 | (姓名,string) |
2 | (成绩,int) |
3 | (身高,double) |
根据发明实施例提供的数据序列化方法,利用表三提供数据模板对表二中原数据进行序列化后,得到的序列化后数据的格式如图5所示,其中,字节序列1为字段编号1对应的字节序列;字节序列2为张三所占的字节长度对应的字节序列;字节序列3为张三对应的字节序列;字节序列4为字段编号2对应的字节序列;字节序列5为变字节长度的编码方式的标识对应的字节序列;字节序列6为90对应的字节序列;字节序列7为字段编号3对应的字节序列;字节序列8为199对应的字节序列。图5所示的原数据对应的序列化数据以预设存储区域的设定位置为起始位置,连续存储到该预设存储区域。
实际应用场景中,还涉及对原数据对应的序列化数据进行反序列化的操作,反序列化的过程与序列化的过程相反,即将序列化数据还原为原数据的过程,优选地,本发明实施可采用如下方式对原数据对应的序列化数据进行反序列化:
按照所述预设数据模板中各个字段编号由小到大的顺序,针对所述预设数据模板中的每个字段编号,执行以下反序列化步骤:
根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化。
具体的,从最小的字段编号开始,针对预设数据模板中的每个字段编号,确定该字段编号关联的数据类型,根据该字段编号关联的数据类型对该字段编号关联的字段名对应的字段内容进行反序列化。
具体实施时,根据该字段编号关联的数据类型对该字段编号关联的字段名对应的字段内容进行反序列化,如图6所示,包括:
步骤601,利用变字节长度的编码方式对应的解码方式,从所述原数据对应的序列化数据的当前位置处解析出字段编号。
具体的,解析出的字段编号为反序列化后的字段编号。关于变字节长度的编码方式的说明详见上文,这里不做赘述。
具体实施时,原数据对应的序列化后数据在存储时,可记录每个字段编号对应的字节序列的起始位置,反序列化时,可根据各个字段编号的起始位置先对字段编号进行反序列化,其中,当前位置为当前正在进行反序列化的字段编号的起始位置。
步骤602,若该字段编号与解析得到的字段编号相同,根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化。
其中,该字段编号为所述预设数据模板中当前顺序的字段编号。
具体实施时,若该字段编号关联的数据类型为整型,则根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化,包括:
利用变字节长度的编码方式对应的解码方式,从原数据对应的序列化数据中解析出位于该字段编号对应的字节序列之后的编码方式标识;根据编码方式标识对应的编码方式对应的解码方式,从原数据对应的序列化数据中获取位于该编码方式标识对应的字节序列之后的字段内容进行反序列化。
其中,解析出的编码方式标识为反序列化后的编码方式标识,其中,当编码方式标识为1时,表明编码方式为变字节长度的编码方式,当编码方式标识为0时,表明编码方式为固定字节长度的编码方式。
具体实施时,若该字段编号关联的数据类型为字符串型,则根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化,包括:
利用变字节长度的编码方式对应的解码方式,从原数据对应的序列化数据中解析出位于该字段编号对应的字节序列之后的字节长度;从原数据对应的序列化数据中获取位于该字节长度对应的字节序列之后获取所述字节长度个字节,并对该字节长度个字节进行反序列化,得到字段内容。
其中,解析出的字节长度为反序列化后的字节长度,其中,可按照现有的对字符串型数据进行反序列化的方式对该字节长度个字节进行反序列化,具体序列化的实施过程这里不做详述。
具体实施时,若该字段编号关联的数据类型为双精度浮点型或长整型,则根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化,包括:
利用固定字节长度的编码方式对应的解码方式,从原数据对应的序列化数据中解析出位于该字段编号对应的字节序列之后的字段内容。
需要说明的是,本发明实施例中涉及的数据类型对应的反序列化方式与该数据类型对应的序列化方式相对应,即反序列化方式为序列化方式的反过程。
继续沿用上例,假设张三所占的字节数为4字节,则根据本发明实施例提供的序列化方法可知,图5中的字节序列1所占的字节数为1字节,字节序列2所占的字节数为1字节,字节序列3所占的字节数为4字节,字节序列4所占的字节数为1字节,字节序列5所占的字节数为1字节,字节序列6所占的字节数为1字节,字节序列7所占的字节数为1字节,字节序列8所占的字节数为8字节,则对图5中的序列化数据进行反序列的过程如下:
按照字段编号由小到大的顺序,依次对表三提供的数据模板中的字段编号1,2,3关联的字段名对应的字段内容进行反序列化。
下面说明对字段编号1关联的字段名对应的字段内容进行反序列化的过程:
确定字段编号1关联的数据类型为string,根据变字节长度的编码方式对应的解码方式,从图5的起始位置(最左侧)获取1字节长度的字节序列进行反序列化,得到字段编号1;根据变字节长度的编码方式对应的解码方式,从字段编号1对应的字节序列之后再获取1字节长度的字节序列进行反序列化,得到字节长度4;从字节长度4对应的字节序列之后再获取4字节长度的字节序列进行反序列化,得到字段编号1关联的字段名对应的字段内容。
下面说明对字段编号2关联的字段名对应的字段内容进行反序列化的过程:
确定字段编号2关联的数据类型为int,根据变字节长度的编码方式对应的解码方式,从图5中的字节序列3之后获取1字节长度的字节序列进行反序列化,得到字段编号2;根据变字节长度的编码方式对应的解码方式,从字段编号2对应的字节序列之后再获取1字节长度的字节序列进行反序列化,得到编码方式标识1;根据变字节长度的编码方式对应的解码方式,从编码方式标识1对应的字节序列之后再获取1字节长度的字节序列进行反序列化,得到字段编号2关联的字段名对应的字段内容。
下面说明对字段编号3关联的字段名对应的字段内容进行反序列化的过程:
确定字段编号3关联的数据类型为double,根据变字节长度的编码方式对应的解码方式,从图5中的字节序列6之后获取1字节长度的字节序列进行反序列化,得到字段编号3;根据固定节长度的编码方式对应的解码方式,从字段编号3对应的字节序列之后再获取8字节长度的字节序列进行反序列化,得到字段编号3关联的字段名对应的字段内容。
基于与上述实施例提供的数据序列化方法同样的发明构思,本发明还提供一种数据序列化装置,如图7所示,包括:
第一获取模块701,用于获取原数据,所述原数据包括至少一个字段,每个字段包括字段名以及字段名对应的字段内容;
第二获取模块702,用于针对预设数据模板中的每个字段名,从所述原数据中获取该字段名对应的字段内容,所述预设数据模板中预先存储了字段名、数据类型以及字段编号的关联关系,所述数据类型为字段内容的数据类型;
序列化模块703,用于按照该字段名关联的数据类型对应的序列化方式,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列;
拼接模块704,用于按照字段编号由小到大的顺序,将得到的各个字段名所属的字段对应的字节序列拼接成一个字节序列,作为所述原数据对应的序列化数据。
可选地,所述装置中,所述数据类型包括整型、字符串型、双精度浮点型、长整型。
可选地,所述装置中,所述序列化模块703,具体用于:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容在预设范围内,利用变字节长度的编码方式,分别对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名对应的字段内容对应的字节序列以及该字段名关联的字段编号对应的字节序列,所述预设范围为[0,228);以及
利用所述变字节长度的编码方式,对用于表示所述变字节长度的编码方式的标识进行序列化,得到所述变字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述变字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述变字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述装置中,所述序列化模块703,还用于:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容不在预设范围内,利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;以及
利用所述变字节长度的编码方式,分别对该字段名关联的字段编号以及用于表示所述固定字节长度的编码方式的标识进行序列化,得到该字段名关联的字段编号对应的字节序列以及所述固定字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述固定字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述固定字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述装置中,所述序列化模块703,具体用于:
若该字段名关联的数据类型为字符串型,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
确定该字段名对应的字段内容对应的字节序列所占的字节长度;
利用变字节长度的编码方式,对所述字节长度以及该字段名关联的字段编号进行序列化,得到所述字节长度对应的字节序列以及该字段名关联的字段编号对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述字节长度对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述字节长度对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述装置中,所述序列化模块703,具体用于:
若该字段名关联的数据类型为双精度浮点型或长整型,利用变字节长度的编码方式,对该字段名关联的字段编号进行序列化,得到该字段名关联的字段编号对应的字节序列;以及
利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
将该字段名关联的字段编号对应的字节序列与该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,该字段名关联的字段编号对应的字节序列位于该字段名对应的字段内容对应的字节序列之前。
可选地,所述装置,还包括:
反序列化模块705,用于按照所述预设数据模板中各个字段编号由小到大的顺序,针对所述预设数据模板中的每个字段编号,执行以下反序列化步骤:
根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化。
利用本发明提供的数据序列化方法及装置,具有以下有益效果:得到的序列化后的数据以二进制字节序列的形式呈现,可以有效地减少数据占用空间,数据传输以及磁盘读写的效率也可得到一定程度的提升,数据模板中存储的关联关系复杂度低,无嵌套格式,降低了数据序列化的难度。此外,数据模板中仅存储字段名、数据类型和字段编号的关联关系,可根据不同的原数据生成不同的数据模板,若数据模板需要修改,仅涉及关联关系的修改,并可通过读取配置文件或其他数据中间件来生成数据模版,不涉及代码修改以及重新编译生成数据模板的过程,从而能够较灵活的设置数据模板,进而能够在一定程度上提高数据序列化的效率。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种数据序列化方法,其特征在于,包括:
获取原数据,所述原数据包括至少一个字段,每个字段包括字段名以及字段名对应的字段内容;
针对预设数据模板中的每个字段名,从所述原数据中获取该字段名对应的字段内容,所述预设数据模板中预先存储了字段名、数据类型以及字段编号的关联关系,所述数据类型为字段内容的数据类型;
按照该字段名关联的数据类型对应的序列化方式,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列;
按照字段编号由小到大的顺序,将得到的各个字段名所属的字段对应的字节序列拼接成一个字节序列,作为所述原数据对应的序列化数据。
2.根据权利要求1所述的方法,其特征在于,所述数据类型包括整型、字符串型、双精度浮点型、长整型。
3.根据权利要求1所述的方法,其特征在于,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,具体包括:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容在预设范围内,利用变字节长度的编码方式,分别对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名对应的字段内容对应的字节序列以及该字段名关联的字段编号对应的字节序列,所述预设范围为[0,228);以及
利用所述变字节长度的编码方式,对用于表示所述变字节长度的编码方式的标识进行序列化,得到所述变字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述变字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述变字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
4.根据权利要求3所述的方法,其特征在于,还包括:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容不在预设范围内,利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;以及
利用所述变字节长度的编码方式,分别对该字段名关联的字段编号以及用于表示所述固定字节长度的编码方式的标识进行序列化,得到该字段名关联的字段编号对应的字节序列以及所述固定字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述固定字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述固定字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
5.根据权利要求1所述的方法,其特征在于,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,具体包括:
若该字段名关联的数据类型为字符串型,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
确定该字段名对应的字段内容对应的字节序列所占的字节长度;
利用变字节长度的编码方式,对所述字节长度以及该字段名关联的字段编号进行序列化,得到所述字节长度对应的字节序列以及该字段名关联的字段编号对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述字节长度对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述字节长度对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
6.根据权利要求1所述的方法,其特征在于,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列,具体包括:
若该字段名关联的数据类型为双精度浮点型或长整型,利用变字节长度的编码方式,对该字段名关联的字段编号进行序列化,得到该字段名关联的字段编号对应的字节序列;以及
利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
将该字段名关联的字段编号对应的字节序列与该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,该字段名关联的字段编号对应的字节序列位于该字段名对应的字段内容对应的字节序列之前。
7.根据权利要求3-6任一所述的方法,其特征在于,还包括:
按照所述预设数据模板中各个字段编号由小到大的顺序,针对所述预设数据模板中的每个字段编号,执行以下反序列化步骤:
根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化。
8.一种数据序列化装置,其特征在于,包括:
第一获取模块,用于获取原数据,所述原数据包括至少一个字段,每个字段包括字段名以及字段名对应的字段内容;
第二获取模块,用于针对预设数据模板中的每个字段名,从所述原数据中获取该字段名对应的字段内容,所述预设数据模板中预先存储了字段名、数据类型以及字段编号的关联关系,所述数据类型为字段内容的数据类型;
序列化模块,用于按照该字段名关联的数据类型对应的序列化方式,对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名所属的字段对应的字节序列;
拼接模块,用于按照字段编号由小到大的顺序,将得到的各个字段名所属的字段对应的字节序列拼接成一个字节序列,作为所述原数据对应的序列化数据。
9.根据权利要求8所述的装置,其特征在于,所述数据类型包括整型、字符串型、双精度浮点型、长整型。
10.根据权利要求8所述的装置,其特征在于,所述序列化模块,具体用于:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容在预设范围内,利用变字节长度的编码方式,分别对该字段名对应的字段内容以及该字段名关联的字段编号进行序列化,得到该字段名对应的字段内容对应的字节序列以及该字段名关联的字段编号对应的字节序列,所述预设范围为[0,228);以及
利用所述变字节长度的编码方式,对用于表示所述变字节长度的编码方式的标识进行序列化,得到所述变字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述变字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述变字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
11.根据权利要求10所述的装置,其特征在于,所述序列化模块,还用于:
若该字段名关联的数据类型为整型,且该字段名对应的字段内容不在预设范围内,利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;以及
利用所述变字节长度的编码方式,分别对该字段名关联的字段编号以及用于表示所述固定字节长度的编码方式的标识进行序列化,得到该字段名关联的字段编号对应的字节序列以及所述固定字节长度的编码方式的标识对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述固定字节长度的编码方式的标识对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述固定字节长度的编码方式的标识对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
12.根据权利要求8所述的装置,其特征在于,所述序列化模块,具体用于:
若该字段名关联的数据类型为字符串型,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
确定该字段名对应的字段内容对应的字节序列所占的字节长度;
利用变字节长度的编码方式,对所述字节长度以及该字段名关联的字段编号进行序列化,得到所述字节长度对应的字节序列以及该字段名关联的字段编号对应的字节序列;
将该字段名关联的字段编号对应的字节序列、所述字节长度对应的字节序列以及该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,所述字节长度对应的字节序列位于该字段名关联的字段编号对应的字节序列之后,并且位于该字段名对应的字段内容对应的字节序列之前。
13.根据权利要求8所述的装置,其特征在于,所述序列化模块,具体用于:
若该字段名关联的数据类型为双精度浮点型或长整型,利用变字节长度的编码方式,对该字段名关联的字段编号进行序列化,得到该字段名关联的字段编号对应的字节序列;以及
利用固定字节长度的编码方式,对该字段名对应的字段内容进行序列化,得到该字段名对应的字段内容对应的字节序列;
将该字段名关联的字段编号对应的字节序列与该字段名对应的字段内容对应的字节序列进行拼接,得到该字段名所属的字段对应的字节序列;
其中,得到的该字段名所属的字段对应的字节序列中,该字段名关联的字段编号对应的字节序列位于该字段名对应的字段内容对应的字节序列之前。
14.根据权利要求10-13任一所述的装置,其特征在于,还包括:
反序列化模块,用于按照所述预设数据模板中各个字段编号由小到大的顺序,针对所述预设数据模板中的每个字段编号,执行以下反序列化步骤:
根据该字段编号关联的数据类型对应的反序列化方式,对该字段编号关联的字段名对应的字段内容进行反序列化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611250046.4A CN106777292B (zh) | 2016-12-29 | 2016-12-29 | 一种数据序列化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611250046.4A CN106777292B (zh) | 2016-12-29 | 2016-12-29 | 一种数据序列化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106777292A true CN106777292A (zh) | 2017-05-31 |
CN106777292B CN106777292B (zh) | 2019-11-15 |
Family
ID=58927972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611250046.4A Active CN106777292B (zh) | 2016-12-29 | 2016-12-29 | 一种数据序列化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106777292B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107295003A (zh) * | 2017-07-17 | 2017-10-24 | 联动优势科技有限公司 | 一种数据传输方法、装置及系统 |
CN107332854A (zh) * | 2017-07-17 | 2017-11-07 | 联动优势科技有限公司 | 一种报文序列化协商方法及服务提供设备 |
CN107577536A (zh) * | 2017-08-31 | 2018-01-12 | 广东欧珀移动通信有限公司 | 应用优化方法及相关产品 |
CN107832345A (zh) * | 2017-10-16 | 2018-03-23 | 千寻位置网络有限公司 | 基站数据唯一数字化标识的方法 |
CN108228912A (zh) * | 2018-02-12 | 2018-06-29 | 浙江中控技术股份有限公司 | 一种业务数据的处理方法及相关装置 |
CN109271180A (zh) * | 2017-07-12 | 2019-01-25 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN109361399A (zh) * | 2018-10-19 | 2019-02-19 | 上海达梦数据库有限公司 | 一种获取字节序列的方法、装置、设备及存储介质 |
CN111711639A (zh) * | 2020-06-29 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 终端、数据传输方法、系统、和计算机可读存储介质 |
CN112232025A (zh) * | 2019-06-26 | 2021-01-15 | 杭州海康威视数字技术股份有限公司 | 一种字符串存储方法、装置及电子设备 |
CN112307029A (zh) * | 2020-11-03 | 2021-02-02 | 彩讯科技股份有限公司 | 账单数据存储和账单生成方法、装置、服务器及存储介质 |
CN112433787A (zh) * | 2020-11-09 | 2021-03-02 | 北京达佳互联信息技术有限公司 | 目标对象的序列化方法、装置、电子设备及存储介质 |
CN112464619A (zh) * | 2021-01-25 | 2021-03-09 | 平安国际智慧城市科技股份有限公司 | 大数据处理方法、装置、设备及计算机可读存储介质 |
CN112783974A (zh) * | 2020-12-31 | 2021-05-11 | 杭州趣链科技有限公司 | 数据转换方法、装置、设备和存储介质 |
CN113905093A (zh) * | 2021-08-20 | 2022-01-07 | 微梦创科网络科技(中国)有限公司 | 序列化、反序列化方法、装置及电子设备 |
CN115276889A (zh) * | 2021-04-29 | 2022-11-01 | 腾讯科技(深圳)有限公司 | 解码处理方法、装置、计算机设备及存储介质 |
CN115567589A (zh) * | 2022-09-29 | 2023-01-03 | 上海顺舟智能科技股份有限公司 | Json数据的压缩传输方法、装置、设备及存储介质 |
CN115630614A (zh) * | 2022-12-23 | 2023-01-20 | 深圳曼顿科技有限公司 | 数据传输方法、装置、电子设备与介质 |
CN116368788A (zh) * | 2021-04-30 | 2023-06-30 | 株式会社软技 | 串行化方法、逆串行化方法、信息处理程序、信息处理装置以及通信系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN103699633A (zh) * | 2013-12-23 | 2014-04-02 | Tcl集团股份有限公司 | 一种利用xml实现通用化数据交换的方法和系统 |
CN103778248A (zh) * | 2014-02-18 | 2014-05-07 | 成都致云科技有限公司 | 高效自描述的复杂数据对象序列化方法 |
-
2016
- 2016-12-29 CN CN201611250046.4A patent/CN106777292B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN103699633A (zh) * | 2013-12-23 | 2014-04-02 | Tcl集团股份有限公司 | 一种利用xml实现通用化数据交换的方法和系统 |
CN103778248A (zh) * | 2014-02-18 | 2014-05-07 | 成都致云科技有限公司 | 高效自描述的复杂数据对象序列化方法 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271180B (zh) * | 2017-07-12 | 2021-12-24 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN109271180A (zh) * | 2017-07-12 | 2019-01-25 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN107295003A (zh) * | 2017-07-17 | 2017-10-24 | 联动优势科技有限公司 | 一种数据传输方法、装置及系统 |
CN107332854A (zh) * | 2017-07-17 | 2017-11-07 | 联动优势科技有限公司 | 一种报文序列化协商方法及服务提供设备 |
CN107332854B (zh) * | 2017-07-17 | 2020-01-03 | 联动优势科技有限公司 | 一种报文序列化协商方法及服务提供设备 |
CN107577536A (zh) * | 2017-08-31 | 2018-01-12 | 广东欧珀移动通信有限公司 | 应用优化方法及相关产品 |
CN107832345A (zh) * | 2017-10-16 | 2018-03-23 | 千寻位置网络有限公司 | 基站数据唯一数字化标识的方法 |
CN108228912A (zh) * | 2018-02-12 | 2018-06-29 | 浙江中控技术股份有限公司 | 一种业务数据的处理方法及相关装置 |
CN109361399A (zh) * | 2018-10-19 | 2019-02-19 | 上海达梦数据库有限公司 | 一种获取字节序列的方法、装置、设备及存储介质 |
CN112232025A (zh) * | 2019-06-26 | 2021-01-15 | 杭州海康威视数字技术股份有限公司 | 一种字符串存储方法、装置及电子设备 |
CN111711639A (zh) * | 2020-06-29 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 终端、数据传输方法、系统、和计算机可读存储介质 |
CN112307029A (zh) * | 2020-11-03 | 2021-02-02 | 彩讯科技股份有限公司 | 账单数据存储和账单生成方法、装置、服务器及存储介质 |
CN112433787A (zh) * | 2020-11-09 | 2021-03-02 | 北京达佳互联信息技术有限公司 | 目标对象的序列化方法、装置、电子设备及存储介质 |
CN112783974A (zh) * | 2020-12-31 | 2021-05-11 | 杭州趣链科技有限公司 | 数据转换方法、装置、设备和存储介质 |
CN112464619A (zh) * | 2021-01-25 | 2021-03-09 | 平安国际智慧城市科技股份有限公司 | 大数据处理方法、装置、设备及计算机可读存储介质 |
CN112464619B (zh) * | 2021-01-25 | 2021-05-25 | 平安国际智慧城市科技股份有限公司 | 大数据处理方法、装置、设备及计算机可读存储介质 |
CN115276889B (zh) * | 2021-04-29 | 2024-09-24 | 腾讯科技(深圳)有限公司 | 解码处理方法、装置、计算机设备及存储介质 |
CN115276889A (zh) * | 2021-04-29 | 2022-11-01 | 腾讯科技(深圳)有限公司 | 解码处理方法、装置、计算机设备及存储介质 |
CN116368788A (zh) * | 2021-04-30 | 2023-06-30 | 株式会社软技 | 串行化方法、逆串行化方法、信息处理程序、信息处理装置以及通信系统 |
CN113905093A (zh) * | 2021-08-20 | 2022-01-07 | 微梦创科网络科技(中国)有限公司 | 序列化、反序列化方法、装置及电子设备 |
CN115567589A (zh) * | 2022-09-29 | 2023-01-03 | 上海顺舟智能科技股份有限公司 | Json数据的压缩传输方法、装置、设备及存储介质 |
CN115567589B (zh) * | 2022-09-29 | 2023-06-13 | 上海顺舟智能科技股份有限公司 | Json数据的压缩传输方法、装置、设备及存储介质 |
CN115630614A (zh) * | 2022-12-23 | 2023-01-20 | 深圳曼顿科技有限公司 | 数据传输方法、装置、电子设备与介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106777292B (zh) | 2019-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106777292A (zh) | 一种数据序列化方法及装置 | |
CN104753540B (zh) | 数据压缩方法、数据解压方法和装置 | |
CN103902456B (zh) | 测试脚本处理装置、系统及方法 | |
US8046211B2 (en) | Technologies for statistical machine translation based on generated reordering knowledge | |
CN104360865B (zh) | 一种序列化方法、反序列化方法及相关设备 | |
CN106919509A (zh) | 一种客户端生成方法、装置及电子设备 | |
CN102750268A (zh) | 一种对象序列化方法、对象反序列化方法、装置及系统 | |
CN103631783B (zh) | 一种前端页面的生成方法及系统 | |
CN106933835A (zh) | 一种兼容性解析Excel文件的数据导入方法及系统 | |
CN102393850B (zh) | 一种汉字字形认知相似度确定方法 | |
CN111679979B (zh) | 破坏性测试方法及装置 | |
CN109460219A (zh) | 快速序列化接口控制文件的方法 | |
CN103095726A (zh) | 一种协议解析器的处理方法和装置 | |
CN108108260A (zh) | 一种资源文件的校验方法及装置 | |
CN108334622A (zh) | 一种获取格式化复合数据的方法 | |
CN106445890A (zh) | 数据处理方法 | |
CN114743630A (zh) | 一种基于跨模态对比学习的医学报告生成方法 | |
CN104346407B (zh) | 数据申报系统中报表和xml文件数据交互的方法及其装置 | |
CN109684457A (zh) | 一种个股公告数据提取的方法及系统 | |
CN110738050B (zh) | 基于分词和命名实体识别的文本重组方法及装置、介质 | |
CN106844313A (zh) | 一种将Word文件转换成HTML文件的方法和装置 | |
CN104090932B (zh) | 一种内容推荐方法及装置 | |
CN114846459A (zh) | 用于智能且可扩展的模式匹配框架的方法和装置 | |
CN107203525A (zh) | 数据库的处理方法和装置 | |
CN106293862B (zh) | 一种可扩展标记语言xml数据的解析方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee after: NSFOCUS Technologies Group Co.,Ltd. Patentee after: NSFOCUS TECHNOLOGIES Inc. Address before: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee before: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd. Patentee before: NSFOCUS TECHNOLOGIES Inc. |
|
CP01 | Change in the name or title of a patent holder |