CN112214516A - 数据序列化和反序列化的方法及装置 - Google Patents
数据序列化和反序列化的方法及装置 Download PDFInfo
- Publication number
- CN112214516A CN112214516A CN202011182032.XA CN202011182032A CN112214516A CN 112214516 A CN112214516 A CN 112214516A CN 202011182032 A CN202011182032 A CN 202011182032A CN 112214516 A CN112214516 A CN 112214516A
- Authority
- CN
- China
- Prior art keywords
- data
- serialization
- packet
- objects
- elements
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000004590 computer program Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000005070 sampling Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013497 data interchange Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
Images
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据处理技术领域,具体涉及一种数据序列化和反序列化的方法及装置,解决了相关技术中由于序列化和反序列化效率较低,无统一规范,需要重复开发,导致通用性较差、成本较高的问题。该方法包括:将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;将结构化数据转换为字节数据流,完成序列化。本申请通过元素、对象、包等不同层次组合进行数据结构化,从而实现数据的序列化,而采用规范格式的元素、对象和包对数据进行数据结构化,具有较高的适用性和通用性,可适用于绝大多数实时系统中的数据内容序列化,不再需要重复开发,大幅降低成本。
Description
技术领域
本申请涉及数据处理技术领域,特别地涉及一种数据序列化和反序列化的方法及装置。
背景技术
数据序列化是指,在数据传输时,需要将数据结构或对象进行编码,然后在网络或其他传输介质中按这种编码进行传输,在数据接收方则需要根据相应的反序列化规则进行解码,得到数据。同理,在数据存储过程中,同样需要序列化与反序列化的方法,将序列化的数据存储至不易丢失的存储介质中,需要获取数据时则将存储介质中的序列化的数据进行解码获得原数据。
目前常见的序列化和反序列化方法,如数据交换(JavaScript Object Notation,JSON)、可扩展标记语言(Extensible Markup Language,XML)等等,应用广泛,但在嵌入式领域,存在序列化和反序列化效率较低的问题,由于嵌入式系统的特点在于资源有限,对序列化和反序列化的效率要求较高,因此,常见著名的序列化和反序列化方法不适用于这种效率要求高的场景;另外,工程实践中其他常用的序列化方法常追求效率但无统一规范,其通用性、兼容性往往较差,具体表现为不同类型装置采取的序列化方法往往不同,其方式方法多种多样,这将导致需要针对目标重复开发,大幅提高成本。
发明内容
针对上述问题,本申请提供一种数据序列化和反序列化的方法及装置,解决了相关技术中由于序列化和反序列化效率较低,无统一规范,需要重复开发,导致通用性较差、成本较高的技术问题。
第一方面,本申请提供了一种数据序列化的方法,所述方法包括:
将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据;
将所述结构化数据转换为字节数据流,完成序列化。
可选的,所述结构化数据中的元素、对象和包均按照预设字节长度对齐排列。
可选的,所述元素标签包括数据类型和数据大小,其中,所述元素标签的长度为所述预设字节长度,所述数据类型和数据大小各占二分之一的所述预设字节长度;
所述对象标签包括对象类型和对象大小,其中,所述对象标签的长度为所述预设字节长度,所述对象类型和对象大小各占二分之一的所述预设字节长度;
所述包标签包括包类型和包大小,其中,所述包标签的长度为所述预设字节长度,所述包类型和包大小各占二分之一的所述预设字节长度。
可选的,所述包描述头包括一个描述字符串和属性信息,其中,所述属性信息包括包中数据的大小端、时间戳和预留区。
第二方面,一种数据反序列化方法,与第一方面所述的数据序列化方法相对应,所述方法包括:
将待反序列化数据从字节数据流转换为结构化数据;
将所述结构化数据按照预设的元素、对象、包的数据结构格式进行数据提取,得到所述结构化数据中包含的数据内容,完成反序列化;
其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据。
第三方面,一种数据序列化装置,所述装置包括:
结构化单元,用于将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据;
转换单元,用于将所述结构化数据转换为字节数据流,完成序列化。
可选的,所述结构化数据中的元素、对象和包均按照预设字节长度对齐排列。
可选的,所述元素标签包括数据类型和数据大小,其中,所述元素标签的长度为所述预设字节长度,所述数据类型和数据大小各占二分之一的所述预设字节长度;
所述对象标签包括对象类型和对象大小,其中,所述对象标签的长度为所述预设字节长度,所述对象类型和对象大小各占二分之一的所述预设字节长度;
所述包标签包括包类型和包大小,其中,所述包标签的长度为所述预设字节长度,所述包类型和包大小各占二分之一的所述预设字节长度。
可选的,所述包描述头包括一个描述字符串和属性信息,其中,所述属性信息包括包中数据的大小端、时间戳和预留区。
第四方面,一种数据反序列化装置,与第三方面所述的数据序列化装置相对应,所述装置包括:
反转换单元,用于将待反序列化数据从字节数据流转换为结构化数据;
反结构化单元,用于将所述结构化数据按照预设的元素、对象、包的数据结构格式进行数据提取,得到所述结构化数据中包含的数据内容,完成反序列化;
其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据。
第五方面,一种存储介质,该存储介质存储的计算机程序,可被一个或多个处理器执行,可用来实现如上述第一方面所述的数据序列化方法或上述第二方面所述的数据反序列化方法。
第六方面,一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述存储器和所述处理器之间互相通信连接,该计算机程序被所述处理器执行时,执行如上述第一方面所述的数据序列化方法或上述第二方面所述的数据反序列化方法。
本申请提供的一种数据序列化和反序列化的方法及装置,包括:将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据;将所述结构化数据转换为字节数据流,完成序列化。本申请通过元素、对象、包等不同层次组合进行数据结构化,从而实现数据的序列化,而采用规范格式的元素、对象和包对数据进行数据结构化,具有较高的适用性和通用性,可适用于绝大多数实时系统中的数据内容序列化,不再需要重复开发,大幅降低成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种数据序列化方法的流程示意图;
图2为本申请实施例提供的元素的结构示意图;
图3为本申请实施例提供的另一种元素的结构示意图;
图4为本申请实施例提供的对象的结构示意图;
图5为本申请实施例提供的通道对象的结构示意图;
图6为本申请实施例提供的通道描述对象的结构示意图;
图7为本申请实施例提供的通道数据对象的结构示意图;
图8为本申请实施例提供的另一种通道对象的结构示意图;
图9为本申请实施例提供的包的结构示意图;
图10为本申请实施例提供的包描述头的结构示意图;
图11为本申请实施例提供的一种数据反序列化方法的流程示意图;
图12为本申请实施例提供的一种数据序列化装置的结构示意图;
图13为本申请实施例提供的一种数据反序列化装置的结构示意图;
图14为本申请实施例提供的一种电子设备的连接框图。
具体实施方式
以下将结合附图及实施例来详细说明本申请的实施方式,借此对本申请如何应用技术手段来解决技术问题,并达到相应技术效果的实现过程能充分理解并据以实施。本申请实施例以及实施例中的各个特征,在不相冲突前提下可以相互结合,所形成的技术方案均在本申请的保护范围之内。
由背景技术可知,目前常见的序列化和反序列化方法,如数据交换(JavaScriptObject Notation,JSON)、可扩展标记语言(Extensible Markup Language,XML)等等,应用广泛,但在嵌入式领域,存在序列化和反序列化效率较低的问题,由于嵌入式系统的特点在于资源有限,对序列化和反序列化的效率要求较高,因此,常见著名的序列化和反序列化方法不适用于这种效率要求高的场景;另外,工程实践中其他常用的序列化方法常追求效率但无统一规范,其通用性、兼容性往往较差,具体表现为不同类型装置采取的序列化方法往往不同,其方式方法多种多样,这将导致需要针对目标重复开发,大幅提高成本。
有鉴于此,本申请提供一种数据序列化和反序列化的方法及装置,解决了相关技术中由于序列化和反序列化效率较低,无统一规范,需要重复开发,导致通用性较差、成本较高的技术问题。
实施例一
图1为本申请实施例提供的一种数据序列化方法的流程示意图,如图1所示,本方法包括:
S101、将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据。
在步骤S101中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据。
S102、将所述结构化数据转换为字节数据流,完成序列化。
需要说明的是,本申请中元素可以对任意数据类型的数据内容进行表示,同时支持支持自定义元素;对象可包含多个元素或其他对象,每个元素都是对该对象的描述或成员,如时间维度、数据维度、数据内容、对象名称等,每个对象具有唯一标识符,以区分不同对象;包,则包含一个或多个对象内容,一次数据传输或数据存储都是以包为单位进行,包中可约定包中数据整体的属性信息,如大小端、加密、压缩等。
可选的,所述结构化数据中的元素、对象和包均按照预设字节长度对齐排列。
可选的,所述元素标签包括数据类型和数据大小,其中,所述元素标签的长度为所述预设字节长度,所述数据类型和数据大小各占二分之一的所述预设字节长度。
需要说明的是,任何数据必然有其数据类型、数据大小以及数据内容,元素数据结构如图2所示;
元素由一个元素标签以及元素数据组成。其中,元素标签包括数据类型及数据大小。
进一步需要说明的是,元素标签与元素数据均需要进行对齐,本申请中优选的预设字节长度为4字节对齐、8字节对齐或16字节对齐,为了便于理解,本申请中的所有附图和实施例,均以8字节对齐为例,下文不再重复说明。不同的对齐方式对空间与效率有较大影响,对齐过大会浪费传输带宽或存储空间,对齐过小CPU进行序列化与反序列化操作时的效率会降低,且不同总线宽度的CPU的处理复杂程度不一致。但不同预设字节长度的对齐方式对于本申请阐述的方法都适用,仅需显而易见的调整即可。
下面以预设字节长度为8字节对齐为例进行举例描述,其中,元素标签中数据类型与数据大小都是4字节UINT32类型的数据。
元素的数据类型如表1所示,表1支持用户自定义,实现拓展,本申请中仅列举常用基本数据类型。其他复杂数据类型均是基本数据类型的变种,均在本申请的保护范围之内。以预设字节长度为8字节对齐为例,则数据类型、数据大小分别占用4字节。
表1
元素类型 | UINT32 | 说明 |
char8 | 0 | 字符串类型 |
UINT8 | 1 | 无符号8位整型 |
UINT16 | 2 | 无符号16位整型 |
UINT32 | 3 | 无符号32位整型 |
UINT64 | 4 | 无符号64位整型 |
INT8 | 5 | 有符号8位整型 |
INT16 | 6 | 有符号16位整型 |
INT32 | 7 | 有符号32位整型 |
INT64 | 8 | 有符号64位整型 |
REAL32 | 9 | 单浮点 |
REAL64 | 10 | 双浮点 |
COMPLEX | 11 | 复数 |
… | … | … |
其中,元素的数据大小,指的是元素数据区域的有效数据内容的大小。
元素数据区域,指的是实际的数据内容,不足预设字节长度整数倍的,需要填充数据以实现预设字节长度对齐。
例如,不足8字节整数倍的,需要填充数据以实现8字节对齐。填充数据可以是任意值,本方案优选填充数据为0。
具体的,存储一个类型为UINT8,长度为10的数据[0,1,2,3,4,5,6,7,8,9],那么字节排序如图3所示。
为进一步提高效率,降低空间占用,如大小端、属性信息等在包中的描述,全包中的元素、对象、包数据全部按照同一个的预设大小端格式、属性信息格式设定。
可选的,所述对象标签包括对象类型和对象大小,其中,所述对象标签的长度为所述预设字节长度,所述对象类型和对象大小各占二分之一的所述预设字节长度。
需要说明的是,对象是由对象标签以及多个元素或其他对象组成,每个元素或子对象都是该对象的成员或属性描述,他们紧密排列在一起,如图4所示。对象标签中对象类型与对象大小均为UINT32数据类型,遵循预设字节长度为8字节的对齐方式,同时对象中每个元素都是8字节对齐的,因此对象也必然是8字节对齐的。
表2为对象类型表,对象类型可拓展、支持用户自定义,本申请提出几种适用于嵌入式系统的对象类型,并约定其成员元素,具体如下:
表2
对象类型 | UINT32 | 名称 |
OBJ_CH | 0x100 | 通道 |
OBJ_CHDESC | 0x200 | 通道描述 |
OBJ_CHDATA | 0x300 | 通道数据 |
… | … |
其中,通道对象(OBJ_CH)的结构如图5所示。
图5中,元素1也就是通道标识元素的内容如表3所示:
表3
其中,唯一标识符,用于区分不同对象,注意,本申请中不同类型的对象的识别符也不能相同。这有利于不同对象类型对同一应用情景下事物的不同角度描述。通道中每个元素都支持用户拓展,在约定部分后面自行拓展。以通道标识元素为例,用户扩展区域如表4所示,扩展时需注意元素长度对齐,以及其他应遵循的统一设定。
表4
图5中,元素2也就是时间信息元素的内容如表5所示:
表5
时间信息元素用于描述通道对象的时间属性信息,在实时系统中数据的时间属性十分重要。
其中,时间戳是格林威治时间,精确到秒,与采样率及起始采样点配合可实现精确的时间描述。
采样率为通道的采样率,单位Hz,特别的该字段的数据类型为单浮点REAL32,这样保障采样率小于1的通道描述;另外,对于常量或采样周期不定的通道数据,采样率应为0。
特殊采样标识段描述数据的属性,使对象具有表示不定采样周期的数据的能力。
以data[x][y][z]数据为例,如特殊采样标识最高位为0表示数据内容元素中的数据无时间信息,如特殊采样标识最高位为1,表示数据内容元素中的数据有时间信息,且其低31位中描述时间信息所在维度,如描述data[x][y][z]数组中data[0][0][z]是时间信息维度,以此来实现不定采样周期的数据及其时间的序列化。描述时间信息维度的方法,本申请中优选一种通过比特位的表示方法,如表8所示,元素中依次描述数据的不同维度,预先约定每个维度对应特殊采样标识的低31位,从低向高位,因此最大支持31维度的数据,以data[x][y][z]数组为例,bit2:0位b100,即表示z轴为时间轴,约定其他维度首位,即在data[0][0][z]存储时间信息。
综上,时间戳配合采样率及起始采样点,可以精准描述数据的起始采样时刻。特殊采样标识用于支持对不定采样周期的通道的表示。
需要注意的是,很多场景对数据的时间信息要求较低,甚至并不需要,这取决于数据双方。本方法支持根据需要对时间信息元素的简化,如可将时间戳、采样率、起始采样点及特殊采样标识省略,如表6所示:
表6
图5中,元素3也就是通道名称元素的内容如表7所示:
表7
其中,通道名称是用于表示通道的名称。通道名称的长度不包含“\0”,获取完字符串时请补0填充。
图5中,元素4也就是数据维度元素的内容如表8所示:
表8
图5中,元素5也就是数据内容元素的内容如表9所示:
表9
数据维度与数据内容,顾名思义,用于表示数据的维度及数据的内容。对于多维数据需要按预设顺序转化,本方法中优先C语言多维数组空间顺序作为预设顺序,能减少软件开发工作量。
进一步需要说明的是,表2中的通道描述对象(OBJ_CHDESC)和通道数据对象(OBJ_CHDATA),因为通道名称及其他不变的属性信息,无需每次数据传输或存储时重复操作,因此可将其分解为通道描述对象和通道数据对象。可以通过控制通道描述对象的出现次数,进一步降低带宽或存储消耗。
其中,图6为通道描述对象(OBJ_CHDESC)的结构示意图,图7为通道数据对象(OBJ_CHDATA)的结构示意图。
需要说明的是,对于任何对象类型,其包含的元素可省略其元素数据区域,以进一步节省空间,提高序列化效率,注意仅省略其元素数据区域,其元素标签仍需保留。
为方便理解,接下来以具体数据举例说明:
某装置模数转换器ADC采集获取的电压数据,可结构化为一种数据通道。该通道名称为“XX模块的输入电压&XXXmoduleU”,采样率2k、ADC同时对3个通道进行采集,全部已转换为单浮点类型,在2020-04-15-17:10:08秒完成采集,其中第一个采样点时刻为当前秒的第50ms。且约定该AD通道,在装置中唯一编码为0x001a;100ms进行一次数据序列化,如通信。该装置通道对象结构如图8所示。
其中,由图8中可以看到通道对象的各个组成部分的具体数据,1586941808时间戳代表时间2020-04-15-17:10:08,起始采样点100表示在当前秒偏移100采样点,即在50ms采集得到第一采样点,因为是定采样,其后的每点数据具有明确的时间。
综上,对象的序列化实现了把一个实时系统常见的数据信息全部表示清楚,且效率较高。
可选的,所述包标签包括包类型和包大小,其中,所述包标签的长度为所述预设字节长度,所述包类型和包大小各占二分之一的所述预设字节长度。
可选的,所述包描述头包括一个描述字符串和属性信息,其中,所述属性信息包括包中数据的大小端、时间戳和预留区。
需要说明的是,如图9所示,为包的结构示意图,包:由一个包描述头、包标签和一个或多个对象成员组成,包中对象成员紧密对齐排布,n为大于或等于1的正整数。
如图10所示,为包描述头的结构示意图。包描述头起始是人类可读格式,即采用ASCII码格式。其中包含包中协议版本,包数据创建的时间等信息;紧随其后是包中数据的大小端、时间戳等二进制信息。
包描述头,由一个描述字符串及属性信息组成,其中描述字符串形如“UCFF1.0CRRC 2019-12-11 12:00:00”,是人类可读信息,方便人类确认字节数据流的格式属性;本申请中可优选40字节字符串,不足部分填充0x20或0。
包描述头中的属性信息部分包含包数据的大小端、时间戳(代表该包的创建时间)以及预留区(预留的用于自定义的描述信息区)。同理,对时间无要求的可省略相关时间戳信息,填充0。
包类型是为了支持用户功能拓展。对象的结构可表示任何嵌入式系统中常见的数据对象,而包的结构是多个数据对象的组合,增加数据的业务层面的设定,用以支撑面向不同应用场景。包类型主要用于区分不同的包协议。
本实施例预设几种常用的包类型,用户也可自定义并拓展新的包类型,不同包类型表示数据具有不同的处理方式,具体的包类型如表10所示:
表10
包类型 | UINT32 | 名称 |
PKG_COMMON | 0x10000 | 普通包 |
PKG_ENCRYPT | 0x20000 | 加密包 |
PKG_COMPRESS | 0x30000 | 压缩包 |
PKG_ENC_COMP | 0x40000 | 加密压缩包 |
… | … |
其中,普通包是可直接解析的包,包中数据直接可读,无任何加密、压缩或其他预处理的。
加密包是通过一定加密算法加密处理后的数据包,加密、解密的秘钥,应通过其他安全途径传递或约定。
压缩包是通过一定压缩算法处理后的数据包,即对包中全部对象数据整体进行压缩,反序列化需要将数据解压后再按普通包进行解析获取数据。常用压缩算法较多,数据双发应约定统一压缩、解压缩的算法。
综上所述,本申请实施例提供了一种数据序列化的方法,包括:将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据;将所述结构化数据转换为字节数据流,完成序列化。本申请通过元素、对象、包等不同层次组合进行数据结构化,从而实现数据的序列化,而采用规范格式的元素、对象和包对数据进行数据结构化,具有较高的适用性和通用性,可适用于绝大多数实时系统中的数据内容序列化,不再需要重复开发,大幅降低成本。
实施例二
图11为本申请实施例提供的一种数据反序列化方法的流程示意图,如图11所示,该方法包括:
S201、将待反序列化数据从字节数据流转换为结构化数据。
S202、将所述结构化数据按照预设的元素、对象、包的数据结构格式进行数据提取,得到所述结构化数据中包含的数据内容,完成反序列化。
其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据。
需要说明的是,序列化的过程就是将需要序列化的数据按元素结构进行字节排布的过程;元素的反序列化的过程事实上就是按照元素结构进行解析的过程,以预设字节长度为8字节对齐的元素结构为例,具体操作如下:
首先对齐到元素起始位置,按UINT32读取4字节数据,根据数据内容判断当前元素的数据类型;往后继续按UINT32类型读取4字节数据,获取数据有效长度,根据元素数据类型继续往后读取元素数据长度大小的数据,从而完成元素的解析,获得数据的数据类型、数据大小及数据内容。
本实施例中,反序列化方法即为与实施例一序列化方法的逆过程,其中涉及到具体原理和结构说明与实施例一相同,本实施例在此不再重复。
实施例三
基于上述本发明实施例公开的数据序列化方法,图12具体公开了应用该数据序列化方法的数据序列化装置。
如图12所示,本发明实施例公开了一种数据序列化装置,该装置包括:
结构化单元301,用于将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据。
转换单元302,用于将所述结构化数据转换为字节数据流,完成序列化。
可选的,所述结构化数据中的元素、对象和包均按照预设字节长度对齐排列。
可选的,所述元素标签包括数据类型和数据大小,其中,所述元素标签的长度为所述预设字节长度,所述数据类型和数据大小各占二分之一的所述预设字节长度。
所述对象标签包括对象类型和对象大小,其中,所述对象标签的长度为所述预设字节长度,所述对象类型和对象大小各占二分之一的所述预设字节长度。
所述包标签包括包类型和包大小,其中,所述包标签的长度为所述预设字节长度,所述包类型和包大小各占二分之一的所述预设字节长度。
可选的,所述包描述头包括一个描述字符串和属性信息,其中,所述属性信息包括包中数据的大小端、时间戳和预留区。
以上本发明实施例公开的数据序列化装置中的结构化单元301和转换单元302的具体工作过程,可参见本发明上述实施例公开的数据序列化方法中的对应内容,这里不再进行赘述。
综上所述,本申请实施例提供了一种数据序列化的装置,包括:将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据;将所述结构化数据转换为字节数据流,完成序列化。本申请通过元素、对象、包等不同层次组合进行数据结构化,从而实现数据的序列化,而采用规范格式的元素、对象和包对数据进行数据结构化,具有较高的适用性和通用性,可适用于绝大多数实时系统中的数据内容序列化,不再需要重复开发,大幅降低成本。
实施例四
图13为本申请实施例提供的一种数据反序列化装置的结构示意图,如图13所示,该装置包括:
反转换单元401,用于将待反序列化数据从字节数据流转换为结构化数据。
反结构化单元402,用于将所述结构化数据按照预设的元素、对象、包的数据结构格式进行数据提取,得到所述结构化数据中包含的数据内容,完成反序列化。
其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据。
需要说明的是,序列化的过程就是将需要序列化的数据按元素结构进行字节排布的过程;元素的反序列化的过程事实上就是按照元素结构进行解析的过程,以预设字节长度为8字节对齐的元素结构为例,具体操作如下:
首先对齐到元素起始位置,按UINT32读取4字节数据,根据数据内容判断当前元素的数据类型;往后继续按UINT32类型读取4字节数据,获取数据有效长度,根据元素数据类型继续往后读取元素数据长度大小的数据,从而完成元素的解析,获得数据的数据类型、数据大小及数据内容。
本实施例中,本装置应用的反序列化方法即为与实施例一序列化方法的逆过程,其中涉及到具体原理和结构说明与实施例一相同,本实施例在此不再重复。
实施例五
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如实施例一和/或实施例二的方法步骤,本实施例在此不再重复赘述。
实施例六
图14为本申请实施例提供的一种电子设备500的连接框图,如图14所示,该电子设备500可以包括:处理器501,存储器502,输入/输出(I/O)接口503,以及通信组件504。
其中,处理器501用于执行如实施例一中的数据序列化方法中的全部或部分步骤和/或如实施例二中的数据反序列化方法中的全部或部分步骤。存储器502用于存储各种类型的数据,这些数据例如可以包括电子设备中的任何应用程序或方法的指令,以及应用程序相关的数据。
处理器501可以是专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable LogicDevice,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例一中的数据序列化方法和/或上述实施例二中的数据反序列化方法。
存储器502可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
I/O接口503为处理器501和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。
通信组件504用于该电子设备500与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件504可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
综上,本申请提供的一种数据序列化和反序列化的方法及装置,包括:将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据;将所述结构化数据转换为字节数据流,完成序列化。本申请通过元素、对象、包等不同层次组合进行数据结构化,从而实现数据的序列化,而采用规范格式的元素、对象和包对数据进行数据结构化,具有较高的适用性和通用性,可适用于绝大多数实时系统中的数据内容序列化,不再需要重复开发,大幅降低成本。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的方法,也可以通过其它的方式实现。以上所描述的方法实施例仅仅是示意性的。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然本申请所揭露的实施方式如上,但上述的内容只是为了便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属技术领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (12)
1.一种数据序列化方法,其特征在于,所述方法包括:
将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据;
将所述结构化数据转换为字节数据流,完成序列化。
2.根据权利要求1所述的方法,其特征在于,所述结构化数据中的元素、对象和包均按照预设字节长度对齐排列。
3.根据权利要求2所述的方法,其特征在于,所述元素标签包括数据类型和数据大小,其中,所述元素标签的长度为所述预设字节长度,所述数据类型和数据大小各占二分之一的所述预设字节长度;
所述对象标签包括对象类型和对象大小,其中,所述对象标签的长度为所述预设字节长度,所述对象类型和对象大小各占二分之一的所述预设字节长度;
所述包标签包括包类型和包大小,其中,所述包标签的长度为所述预设字节长度,所述包类型和包大小各占二分之一的所述预设字节长度。
4.根据权利要求1所述的方法,其特征在于,所述包描述头包括一个描述字符串和属性信息,其中,所述属性信息包括包中数据的大小端、时间戳和预留区。
5.一种数据反序列化方法,其特征在于,与权利要求1所述的数据序列化方法相对应,所述方法包括:
将待反序列化数据从字节数据流转换为结构化数据;
将所述结构化数据按照预设的元素、对象、包的数据结构格式进行数据提取,得到所述结构化数据中包含的数据内容,完成反序列化;
其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据。
6.一种数据序列化装置,其特征在于,所述装置包括:
结构化单元,用于将待序列化数据按照预设的元素、对象、包的数据结构格式进行结构化,得到结构化数据;其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据;
转换单元,用于将所述结构化数据转换为字节数据流,完成序列化。
7.根据权利要求6所述的装置,其特征在于,所述结构化数据中的元素、对象和包均按照预设字节长度对齐排列。
8.根据权利要求7所述的装置,其特征在于,所述元素标签包括数据类型和数据大小,其中,所述元素标签的长度为所述预设字节长度,所述数据类型和数据大小各占二分之一的所述预设字节长度;
所述对象标签包括对象类型和对象大小,其中,所述对象标签的长度为所述预设字节长度,所述对象类型和对象大小各占二分之一的所述预设字节长度;
所述包标签包括包类型和包大小,其中,所述包标签的长度为所述预设字节长度,所述包类型和包大小各占二分之一的所述预设字节长度。
9.根据权利要求6所述的装置,其特征在于,所述包描述头包括一个描述字符串和属性信息,其中,所述属性信息包括包中数据的大小端、时间戳和预留区。
10.一种数据反序列化装置,其特征在于,与权利要求6所述的数据序列化装置相对应,所述装置包括:
反转换单元,用于将待反序列化数据从字节数据流转换为结构化数据;
反结构化单元,用于将所述结构化数据按照预设的元素、对象、包的数据结构格式进行数据提取,得到所述结构化数据中包含的数据内容,完成反序列化;
其中,所述包的结构格式包括一个包描述头、包标签和一个或多个对象,所述对象的结构格式包括一个对象标签和多个元素或子对象,所述元素的结构格式包括一个元素标签和元素数据。
11.一种存储介质,其特征在于,该存储介质存储的计算机程序,可被一个或多个处理器执行,可用来实现如权利要求1~4任意一项所述的数据序列化方法或权利要求5所述的数据反序列化方法。
12.一种电子设备,其特征在于,包括存储器和处理器,所述存储器上存储有计算机程序,所述存储器和所述处理器之间互相通信连接,该计算机程序被所述处理器执行时,执行如权利要求1~4任意一项所述的数据序列化方法或权利要求5所述的数据反序列化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011182032.XA CN112214516A (zh) | 2020-10-29 | 2020-10-29 | 数据序列化和反序列化的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011182032.XA CN112214516A (zh) | 2020-10-29 | 2020-10-29 | 数据序列化和反序列化的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112214516A true CN112214516A (zh) | 2021-01-12 |
Family
ID=74057481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011182032.XA Pending CN112214516A (zh) | 2020-10-29 | 2020-10-29 | 数据序列化和反序列化的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112214516A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114500647A (zh) * | 2022-01-18 | 2022-05-13 | 聚好看科技股份有限公司 | 一种数据传输方法及装置 |
CN114490535A (zh) * | 2022-01-12 | 2022-05-13 | 北京齐尔布莱特科技有限公司 | 数据传输方法、数据传输系统、计算设备及存储介质 |
CN116028434A (zh) * | 2023-03-23 | 2023-04-28 | 中科星图测控技术股份有限公司 | 一种描述空间分析场景的文件编码方法和系统 |
CN116405557A (zh) * | 2023-03-14 | 2023-07-07 | 中科南京移动通信与计算创新研究院 | 基于注解的数据反序列化以及序列化方法 |
WO2024032766A1 (zh) * | 2022-08-12 | 2024-02-15 | 安徽新永拓新材料有限公司 | 生产数据的存储和读取方法、系统及计算机可读介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104486396A (zh) * | 2014-12-10 | 2015-04-01 | 中国电信集团系统集成有限责任公司 | 一种跨平台的网络数据的传输方法 |
CN105321034A (zh) * | 2014-05-30 | 2016-02-10 | 艾玛迪斯简易股份公司 | 内容访问方法和系统 |
CN106648817A (zh) * | 2016-12-09 | 2017-05-10 | 北京酷我科技有限公司 | 一种跨平台的数据对象传输方法 |
CN106815238A (zh) * | 2015-11-30 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种结构化数据的序列化、反序列化方法及装置 |
CN108446319A (zh) * | 2018-02-09 | 2018-08-24 | 烽火通信科技股份有限公司 | 将数据进行二进制序列化的方法和系统 |
-
2020
- 2020-10-29 CN CN202011182032.XA patent/CN112214516A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105321034A (zh) * | 2014-05-30 | 2016-02-10 | 艾玛迪斯简易股份公司 | 内容访问方法和系统 |
CN104486396A (zh) * | 2014-12-10 | 2015-04-01 | 中国电信集团系统集成有限责任公司 | 一种跨平台的网络数据的传输方法 |
CN106815238A (zh) * | 2015-11-30 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种结构化数据的序列化、反序列化方法及装置 |
CN106648817A (zh) * | 2016-12-09 | 2017-05-10 | 北京酷我科技有限公司 | 一种跨平台的数据对象传输方法 |
CN108446319A (zh) * | 2018-02-09 | 2018-08-24 | 烽火通信科技股份有限公司 | 将数据进行二进制序列化的方法和系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490535A (zh) * | 2022-01-12 | 2022-05-13 | 北京齐尔布莱特科技有限公司 | 数据传输方法、数据传输系统、计算设备及存储介质 |
CN114500647A (zh) * | 2022-01-18 | 2022-05-13 | 聚好看科技股份有限公司 | 一种数据传输方法及装置 |
WO2024032766A1 (zh) * | 2022-08-12 | 2024-02-15 | 安徽新永拓新材料有限公司 | 生产数据的存储和读取方法、系统及计算机可读介质 |
CN116405557A (zh) * | 2023-03-14 | 2023-07-07 | 中科南京移动通信与计算创新研究院 | 基于注解的数据反序列化以及序列化方法 |
CN116028434A (zh) * | 2023-03-23 | 2023-04-28 | 中科星图测控技术股份有限公司 | 一种描述空间分析场景的文件编码方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112214516A (zh) | 数据序列化和反序列化的方法及装置 | |
US7924183B2 (en) | Method and system for reducing required storage during decompression of a compressed file | |
CN110381093B (zh) | 数据协议转换的方法、装置、数据传输的系统及电子设备 | |
US7952500B2 (en) | Serialization of shared and cyclic data structures using compressed object encodings | |
Werner et al. | Compressing SOAP messages by using differential encoding | |
JP2011512730A (ja) | テンプレート式のパラメータを使用したメッセージの符号化および復号化 | |
CN112333186B (zh) | 数据通信方法、装置、设备及存储介质 | |
CN105653616B (zh) | 电力系统主站的通信规约转换方法 | |
CN111683066A (zh) | 异构系统集成方法、装置、计算机设备和存储介质 | |
CN111262876A (zh) | 基于区块链的数据处理方法、装置、设备以及存储介质 | |
US20100141487A1 (en) | Method and apparatus for decoding variable length data | |
CN111131403A (zh) | 一种物联网设备的消息编解码方法及装置 | |
EP1702412A1 (en) | Rapidly queryable data compression format for xml files | |
CN114331416A (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN114020272A (zh) | 一种序列化编码、解码方法、装置及电子设备 | |
CN108737353B (zh) | 一种基于数据分析系统的数据加密方法及装置 | |
CN113905093A (zh) | 序列化、反序列化方法、装置及电子设备 | |
CN115248924A (zh) | 一种二维码处理方法、装置、电子设备和存储介质 | |
CN105808549B (zh) | 基于映射文件自动组帧及分析帧的客户端方法 | |
CN104021121A (zh) | 一种文本数据压缩方法、装置及服务器 | |
CN113051202A (zh) | 接口适配方法、装置、电子设备和计算机可读存储介质 | |
CN110061861B (zh) | 互联网协议配置方法、装置、设备及计算机可读存储介质 | |
CN113204683A (zh) | 信息重构方法和装置、存储介质及电子设备 | |
CN105959263A (zh) | 基于json的机构养老数据交互方法及系统 | |
CN206712982U (zh) | 一种用于VLSI设计的Huffman编码系统 |
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 |