CN116932615A - 自适应协议的数据序列化方法及装置 - Google Patents
自适应协议的数据序列化方法及装置 Download PDFInfo
- Publication number
- CN116932615A CN116932615A CN202311205133.8A CN202311205133A CN116932615A CN 116932615 A CN116932615 A CN 116932615A CN 202311205133 A CN202311205133 A CN 202311205133A CN 116932615 A CN116932615 A CN 116932615A
- Authority
- CN
- China
- Prior art keywords
- data structure
- data
- information
- protocol
- extended
- 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 55
- 230000003044 adaptive effect Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 9
- 239000000872 buffer Substances 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种自适应协议的数据序列化方法及装置,涉及计算机技术领域,方法包括:将待序列化的第一协议数据转换成第二协议数据,对第二协议数据中的数据结构进行遍历;在当前遍历的目标数据结构为基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取目标数据结构的第一信息;在当前遍历的目标数据结构为扩展数据结构的情况下,遍历扩展数据结构中的数据结构,将遍历到的子扩展数据结构作为扩展数据结构,返回执行遍历扩展数据结构中的数据结构的步骤;对遍历到的各基础数据结构,基于基础数据结构的定义,获取各基础数据结构的第二信息;基于各第一信息和各第二信息,对第二协议数据执行序列化操作或反序列化操作。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种自适应协议的数据序列化方法及装置。
背景技术
随着数字化在各个领域的发展,智慧城市、智慧交通等需求不断涌现,随之而来的是不同时期建设的不同业务系统之间的数据交互变得越来越频繁与重要。但由于涉及的系统众多,不同系统间的数据交互变得异常的复杂,尤其存在大量的系统采用自定义协议,难以按照统一接口与协议进行数据交互改造,这也使得在数据交互中多数采用原有系统的接口与协议,降低对原有系统的侵入性,少改造甚至不改造。
综上,由于第三方系统及自定义通信协议众多等原因,使得难以使用既有的结构化序列化方法,进而导致存在开发工作量大,调试困难等问题。
发明内容
本发明提供一种自适应协议的数据序列化方法及装置,用以解决现有技术中存在开发工作量大,调试困难等问题。
本发明提供一种自适应协议的数据序列化方法,包括:
将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项;
在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息;
在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息;
基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
根据本发明提供的一种自适应协议的数据序列化方法,所述第二协议数据还包括扩展操作指示信息;
所述基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作,包括:
基于所述第二协议数据中的扩展操作指示信息,对各所述第一信息和各所述第二信息中的至少一项执行对应的扩展操作,得到第三信息;
基于各所述第一信息、各所述第二信息和所述第三信息,对所述第二协议数据执行序列化操作或反序列化操作。
根据本发明提供的一种自适应协议的数据序列化方法,所述扩展操作指示信息包括以下至少一项:
第一指示信息,用于指示序列化后的数据的字节序为Moto序;
第二指示信息,用于指示序列化后的数据的字节序为Intel序;
第三指示信息,用于指示对数据补零至4字节的整数倍;
第四指示信息,用于指示所述第二协议数据中字符串的第一长度指示信息与第一数据内容之间的第一对应关系,所述第一长度指示信息用于指示所述字符串执行序列化操作后的第一数据内容的字节长度;
第五指示信息,用于指示所述第二协议数据中阵列Array的第二长度指示信息与第二数据内容之间的第二对应关系,所述第二长度指示信息用于指示所述Array执行序列化操作后的第二数据内容的字节长度。
根据本发明提供的一种自适应协议的数据序列化方法,在所述扩展操作指示信息包括所述第四指示信息的情况下,支持在执行序列化操作的序列化数据中,所述第一长度指示信息与所述第一数据内容的位置不相邻。
根据本发明提供的一种自适应协议的数据序列化方法,在所述扩展操作指示信息包括所述第五指示信息的情况下,支持在执行序列化操作的序列化数据中,所述第二长度指示信息与所述第二数据内容的位置不相邻。
根据本发明提供的一种自适应协议的数据序列化方法,所述基础数据结构包括以下至少一项:
不同字节数对应的键值信息;
有符号的不同字节数对应的键值信息;
无符号的不同字节数对应的键值信息;
定长字符串的键值信息;
不定长字符串的键值信息;
支持BCD格式的键值信息;
支持数据块格式的键值信息;
支持Bool格式的键值信息;
支持Array格式的键值信息。
根据本发明提供的一种自适应协议的数据序列化方法,所述扩展数据结构包括以下至少一项:
第一不定数据结构,所述第一不定数据结构包括所述至少两个基础数据结构的组合;
映射数据结构,所述映射数据结构包括目标键和目标值之间的对应关系,所述目标键包括所述基础数据结构,所述目标值包括所述基础数据结构和所述第一不定数据结构中的至少一项;
第二不定数据结构,所述第二不定数据结构包括所述第一不定数据结构和所述映射数据结构中的至少一项。
本发明还提供一种自适应协议的数据序列化装置,包括:
转换模块,用于将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项;
第一获取模块,用于在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息;
第二获取模块,用于在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息;
处理模块,用于基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述自适应协议的数据序列化方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述自适应协议的数据序列化方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述自适应协议的数据序列化方法。
本发明提供的自适应协议的数据序列化方法及装置,先将需要序列化的第一协议数据转换成由基础数据结构和扩展数据结构进行组合、嵌套的第二协议数据,其中,基础数据结构可以理解为是基本的处理单元,扩展数据结构可以由基础数据结构组合得到,也可以包括其他的扩展数据结构,对第二协议数据中的数据结构进行遍历,在当前遍历的目标数据结构为基础数据结构的情况下,可以理解为已经将其细分到了基本的处理单元,故可以基于预先设置的基础数据结构的定义,获取该基础数据结构对应的第一信息,例如获取该基础数据结构对应执行序列化或反序列化操作时的类型和长度等信息;在当前遍历的目标数据结构为扩展数据结构的情况下,需要进一步遍历扩展数据结构,如果遍历得到的是子扩展数据结构,则认为还需要进一步遍历该子扩展数据结构,直到遍历出的都是基础数据结构,再获取所有遍历出的基础数据结构第一信息,作为该扩展数据结构对应的第二信息,最终基于第二协议数据遍历得到的所有第一信息和第二信息,对第二协议数据执行序列化操作或反序列化操作。本发明实施例的第二协议数据以基础数据结构为基本的处理单元,通过对基础数据结构和扩展数据结构进行组合、嵌套等,可以实现极其复杂的数据结构表示,进而可以对任意协议的数据进行表示,再通过遍历数据结构并进行解析,可以实现对各种自定义协议的数据结构的序列化及反序列化处理,有效减少开发、调试的工作量和难度,提高了开发效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的自适应协议的数据序列化方法的流程示意图之一;
图2是本发明提供的自适应协议的数据序列化方法的流程示意图之二;
图3是本发明提供的自适应协议的数据序列化装置的结构示意图;
图4是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图描述本发明的自适应协议的数据序列化方法及装置。
图1是本发明提供的自适应协议的数据序列化方法的流程示意图之一,如图1所示,自适应协议的数据序列化方法包括步骤101至步骤104;其中:
步骤101、将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项。
步骤102、在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息。
步骤103、在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息。
步骤104、基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
相关技术中,由于第三方系统及自定义通信协议众多等原因,使得难以使用既有的结构化序列化方法,进而导致存在开发工作量大,调试困难等问题。
举例来说,在现代的系统中,有很多将结构化数据进行序列化与反序列化的方法,如XDR、MessagePack、Protocol Buffers等。其中,XDR为外部数据表示,MessagePack是一个类似JS键值对数据(JavaScript Object Notation,JSON)的对象序列化规范,ProtocolBuffers是一种结构化数据存储格式,可用于通讯协议、数据存储等领域。
但上述序列化与反序列化的方法,都需要遵循其特有的规则,有很强的限制性,例如XDR需要针对序列化的数据补零,所有不足4字节整数倍的数据均需补零至4字节整数倍,MessagePack、Protocol Buffers也同样有其规则及限制,这使得它们都难以用于众多的自定义协议的序列化或反序列化工作。
为了解决这些问题,亟待在复杂的数据交互中,提出一种能够兼容不同协议的自定义协议,以及针对该自定义协议的数据序列化方法。
本发明实施例中提供了自适应协议的数据序列化方法,用以解决系统间数据交换的过程中,由于第三方系统及自定义通信协议众多等原因,使得无法使用既有的结构化序列化方法,开发工作量大,调试困难等问题。
具体地,可以先将需要序列化的第一协议数据转换成由基础数据结构和扩展数据结构进行组合、嵌套的第二协议数据,这种转换可以理解为,依据自定义协议,使用基础数据结构和扩展数据结构进行组合、嵌套,形成其结构化的数据结构定义。
其中,基础数据结构可以理解为是基本的处理单元,扩展数据结构可以由基础数据结构组合得到,也可以包括其他的扩展数据结构。
可选地,所述基础数据结构可以包括以下至少一项:
(1)不同字节数对应的键值信息;
(2)有符号的不同字节数对应的键值信息;
(3)无符号的不同字节数对应的键值信息;
举例来说,可以设置基础数据结构包括以下至少一项:
1个字节:U8:无符号;S8:有符号。
2个字节:U16:无符号;S16:有符号。
4个字节:U32:无符号;S32:有符号。
8个字节:U64:无符号;S64:有符号。
需要说明的是,键信息具体是指redis数据库中Key—Value对应关系中的Key,值信息是指Value,Key例如可以指示Value中数据的长度,比如,Key为U8的情况下,表征对应的Value中数据为无符号,字节长度为1个字节。
还需要说明的是,无符号的范围可以包括0~255,有符号的范围可以包括-128~128。
(4)定长字符串的键值信息;
(5)不定长字符串的键值信息;
具体地,字符串的键值信息可以包括:
Length:表征字符串长度,长度本身可以是1、2、4字节,存储内容为字符串数据长度;
Data:表征字符串内容。
具体针对是否定长可以分为以下两种情况:
[1]定长:Data(序列化后长度为字符串内容长度)。
[2]不定长:Length+Data(序列化后长度为长度本身+字符串内容长度)。
(6)支持BCD格式的键值信息;
具体地,可以支持BCD编码数据,长度可以根据实际任意设置。
(7)支持数据块(Block)格式的键值信息;
具体地,可以支持数据块,长度可以根据实际任意设置。
(8)支持Bool格式的键值信息;
具体地,可以包括true、false,其中,true可以表征序列化后对应值为1,false可以表征序列化后对应值为0;序列化后的长度可以是1、2、4字节。
(9)支持阵列(Array)格式的键值信息。
具体地,支持Array格式的键值信息包括:
Length:表征Array数量,数量可以是1、2、4字节,存储内容为Array数量;
Array Data:表征Array数据内容。
可选地,所述扩展数据结构可以包括以下至少一项:
a)第一不定数据结构,所述第一不定数据结构包括所述至少两个基础数据结构的组合;
具体地,第一不定数据结构(struct)可以是基础数据结构的组合。
b)映射数据结构,所述映射数据结构包括目标键和目标值之间的对应关系,所述目标键包括所述基础数据结构,所述目标值包括所述基础数据结构和所述第一不定数据结构中的至少一项;
具体地,映射数据结构(Map)可以包括:Key+Value(序列化后数据由Key+Value组成);其中,Key(目标键)可以是基础数据类型;Value(目标值)可以是基础数据类型,也可以是扩展数据类型。
c)第二不定数据结构,所述第二不定数据结构包括所述第一不定数据结构和所述映射数据结构中的至少一项。
具体地,第二不定数据结构(Array)可以由第一不定数据结构struct或Map组成。
在将待序列化的第一协议数据转换成第二协议数据后,可以对第二协议数据中的数据结构进行遍历。
在当前遍历的目标数据结构为基础数据结构的情况下,可以理解为已经将其细分到了基本的处理单元,故可以基于预先设置的基础数据结构的定义,获取该基础数据结构对应的第一信息,例如获取该基础数据结构对应执行序列化或反序列化操作时的类型和长度等信息。
在当前遍历的目标数据结构为扩展数据结构的情况下,需要进一步遍历扩展数据结构,如果遍历得到的是子扩展数据结构,则认为还需要进一步遍历该子扩展数据结构,直到遍历出的都是基础数据结构,再获取所有遍历出的基础数据结构第一信息,作为该扩展数据结构对应的第二信息,最终基于第二协议数据遍历得到的所有第一信息和第二信息,对第二协议数据执行序列化操作或反序列化操作。
需要说明的是,上述提到的数据序列化,既可以包括序列化操作,也可以包括反序列化操作,并不仅限制于序列化操作。
在本发明实施例提供的自适应协议的数据序列化方法中,第二协议数据以基础数据结构为基本的处理单元,通过对基础数据结构和扩展数据结构进行组合、嵌套等,可以实现极其复杂的数据结构表示,进而可以对任意协议的数据进行表示,再通过遍历数据结构并进行解析,可以实现对各种自定义协议的数据结构的序列化及反序列化处理,有效减少开发、调试的工作量和难度,提高了开发效率。
可选地,所述第二协议数据还可以包括扩展操作指示信息;
所述基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作的实现方式可以包括:
基于所述第二协议数据中的扩展操作指示信息,对各所述第一信息和各所述第二信息中的至少一项执行对应的扩展操作,得到第三信息;
基于各所述第一信息、各所述第二信息和所述第三信息,对所述第二协议数据执行序列化操作或反序列化操作。
具体地,第二协议数据还可以包括扩展操作指示信息,即还可以通过扩展操作指示信息与基础数据结构、扩展数据结构进行组合、嵌套,得到第二协议数据,扩展操作指示信息可以指示在序列化操作和反序列操作中的一些扩展功能,例如可以支持在序列化操作和反序列操作过程中进行补零等操作。
可选地,所述扩展操作指示信息可以包括以下至少一项:
1)第一指示信息,用于指示序列化后的数据的字节序为Moto序;
2)第二指示信息,用于指示序列化后的数据的字节序为Intel序;
具体地,可以通过第一指示信息或第二指示信息,对于2、4、8字节数据指定序列化后数据的字节序,例如可以为Moto序与Intel序。
需要说明的是,网络传输通常采用Moto序,但在行业内有个别自定义协议要求数值类数据序列化后采用Intel序进行传输,本发明同时支持Moto序和Intel序;Moto序的数据通常适用于中央处理器(Central Processing Unit,CPU)大端,Intel序的数据通常适用于CPU小端。
3)第三指示信息,用于指示对数据补零至4字节的整数倍;
具体地,可以通过第三指示信息指示对数据补零至4字节的整数倍,来支持4字节对齐,当需要4字节对齐时,针对1、2字节数据及不定长字符串,补零至4字节整数倍。
4)第四指示信息,用于指示所述第二协议数据中字符串的第一长度指示信息与第一数据内容之间的第一对应关系,所述第一长度指示信息用于指示所述字符串执行序列化操作后的第一数据内容的字节长度;
5)第五指示信息,用于指示所述第二协议数据中Array的第二长度指示信息与第二数据内容之间的第二对应关系,所述第二长度指示信息用于指示所述Array执行序列化操作后的第二数据内容的字节长度。
具体地,关于相邻性,对于不定长字符串与Array,其长度(数量)与数据内容在序列化后的位置通常是相邻的,但本发明实施例可以通过第四指示信息支持其不相邻。
可选地,在所述扩展操作指示信息包括所述第四指示信息的情况下,可以支持在执行序列化操作的序列化数据中,所述第一长度指示信息与所述第一数据内容的位置不相邻。
具体地,本发明实施例通过第四指示信息,可以指示建立第二协议数据中字符串的第一长度指示信息与第一数据内容之间的第一对应关系,后续序列化之后可以根据第一对应关系确定第一长度指示信息与第一数据内容之间的对应关系,无需设置二者序列化后的位置一定是相邻的,支持不相邻。
对于Map,其Key与Value序列化后通常是相邻的,但本发明实施例可以通过第五指示信息支持其不相邻。
可选地,在所述扩展操作指示信息包括所述第五指示信息的情况下,可以支持在执行序列化操作的序列化数据中,所述第二长度指示信息与所述第二数据内容的位置不相邻。
具体地,本发明实施例通过第五指示信息,可以指示建立第二协议数据中Array的第二长度指示信息与第二数据内容之间的第二对应关系,后续序列化之后可以根据第二对应关系确定第二长度指示信息与第二数据内容之间的对应关系,无需设置二者序列化后的位置一定是相邻的,支持不相邻。
下面举例说明本发明实施例提供的自适应协议的数据序列化方法。
本发明实施例可以基于预先确定好的可扩展的基本数据类型(基本数据结构和扩展数据结构),结合一些可扩展的规则(扩展操作指示信息),将其进行组合形成可以适应任意自定义协议的结构化数据表示;通过编译器生成或手动实现目标开发语言的代码,实现对各种自定义结构的序列化处理,减少开发、调试工作量,提高工作效率。
1)基础数据结构;
1.1、1个字节:U8:无符号;S8:有符号;
1.2、2个字节:U16:无符号;S16:有符号;
1.3、4个字节:U32:无符号;S32:有符号;
1.4、8个字节:U64:无符号;S64:有符号;
1.5、字符串:
Length:字符串长度,长度本身可以是1、2、4字节,存储内容为字符串数据长度;
Data:字符串内容;
[1]定长:Data(序列化后长度为字符串内容长度);
[2]不定长:Length+Data(序列化后长度为长度本身+字符串内容长度);
1.6、BCD:支持BCD编码数据,长度任意;
1.7、Block:支持数据块,长度任意;
1.8、Bool:true、false,序列化后可以是1、2、4字节;
1.9、Array:
Length:Array数量,数量本身可以是1、2、4字节,存储内容为Array数量;
Array Data:Array数据内容。
2)扩展数据结构;
2.1、不定数据结构struct:是基础数据结构的组合。
2.2、Map:Key+Value(序列化后数据由Key+Value组成)。
其中,Key可以是基础数据类型;Value可以是基础数据类型,也可以是扩展数据类型。
2.3、不定数据结构Array:Array元素由不定数据结构struct或Map组成。
3)扩展规则(可以通过扩展操作指示信息实现);
3.1、字节序:对于2、4、8字节数据可以指定序列化后数据的字节序,Moto序与Intel序。
3.2、4字节对齐:支持4字节对齐,当需要4字节对齐时,针对1、2字节数据及不定长字符串,补零至4字节整数倍。
3.3、相邻性:
[1]对于不定长字符串与Array,其长度(数量)与数据内容序列化后通常是相邻的,但本发明可以支持其不相邻。
[2]对于Map,其Key与Value序列化后通常是相邻的,但本发明可以支持其不相邻。
4)序列化/反序列化的流程;
图2是本发明提供的自适应协议的数据序列化方法的流程示意图之二,如图2所示,包括以下步骤:
S1、依据自定义协议,使用基础数据结构、扩展数据结构、扩展规则进行组合、嵌套,形成其结构化的数据结构定义。
S2、对数据结构定义进行遍历。
S3、判断数据结构是否全部处理完成,若是,则进入S8;若否,则进入S4。
S4、判断当前数据结构是否为基础数据结构,若是,则进入S5;若否,则返回S2。
S5、依据基础数据结构的定义,获取处理的类型与长度。
S6、依据适用的扩展规则进行进一步处理(如补零等操作)。
S7、依据处理的结果进行序列化/反序列化操作,返回S2。
具体地,进行序列化/反序列化操作可以包括写入/读取缓存器(Buffer)的操作。
S8、结束。
本发明实施例中,可以依据基础数据结构、扩展数据结构、扩展规则的组合使用,实现极其复杂的数据结构表示,适应任意自定义协议,结构化定义其对应数据,以实现其序列化功能。具体地:
1)字符串可以支持定长与不定长。
2)不定长字符串、Array等的长度本身,可以是1、2、4字节。
3)Bool可以是1、2、4字节。
4)可以支持BCD、Block等基础数据结构。
5)可以支持极其复杂的数据结构组合与嵌套。
下面对本发明提供的自适应协议的数据序列化装置进行描述,下文描述的自适应协议的数据序列化装置与上文描述的自适应协议的数据序列化方法可相互对应参照。
图3是本发明提供的自适应协议的数据序列化装置的结构示意图,如图3所示,自适应协议的数据序列化装置300包括:
转换模块301,用于将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项;
第一获取模块302,用于在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息;
第二获取模块303,用于在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息;
处理模块304,用于基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
在本发明实施例提供的自适应协议的数据序列化装置中,第二协议数据以基础数据结构为基本的处理单元,通过对基础数据结构和扩展数据结构进行组合、嵌套等,可以实现极其复杂的数据结构表示,进而可以对任意协议的数据进行表示,再通过遍历数据结构并进行解析,可以实现对各种自定义协议的数据结构的序列化及反序列化处理,有效减少开发、调试的工作量和难度,提高了开发效率。
可选地,所述第二协议数据还包括扩展操作指示信息;
处理模块304具体用于:
基于所述第二协议数据中的扩展操作指示信息,对各所述第一信息和各所述第二信息中的至少一项执行对应的扩展操作,得到第三信息;
基于各所述第一信息、各所述第二信息和所述第三信息,对所述第二协议数据执行序列化操作或反序列化操作。
可选地,所述扩展操作指示信息可以包括以下至少一项:
1)第一指示信息,用于指示序列化后的数据的字节序为Moto序;
2)第二指示信息,用于指示序列化后的数据的字节序为Intel序;
3)第三指示信息,用于指示对数据补零至4字节的整数倍;
4)第四指示信息,用于指示所述第二协议数据中字符串的第一长度指示信息与第一数据内容之间的第一对应关系,所述第一长度指示信息用于指示所述字符串执行序列化操作后的第一数据内容的字节长度;
5)第五指示信息,用于指示所述第二协议数据中阵列Array的第二长度指示信息与第二数据内容之间的第二对应关系,所述第二长度指示信息用于指示所述Array执行序列化操作后的第二数据内容的字节长度。
可选地,在所述扩展操作指示信息包括所述第四指示信息的情况下,支持在执行序列化操作的序列化数据中,所述第一长度指示信息与所述第一数据内容的位置不相邻。
可选地,在所述扩展操作指示信息包括所述第五指示信息的情况下,支持在执行序列化操作的序列化数据中,所述第二长度指示信息与所述第二数据内容的位置不相邻。
可选地,所述基础数据结构可以包括以下至少一项:
(1)不同字节数对应的键值信息;
(2)有符号的不同字节数对应的键值信息;
(3)无符号的不同字节数对应的键值信息;
(4)定长字符串的键值信息;
(5)不定长字符串的键值信息;
(6)支持BCD格式的键值信息;
(7)支持数据块格式的键值信息;
(8)支持Bool格式的键值信息;
(9)支持Array格式的键值信息。
可选地,所述扩展数据结构可以包括以下至少一项:
a)第一不定数据结构,所述第一不定数据结构包括所述至少两个基础数据结构的组合;
b)映射数据结构,所述映射数据结构包括目标键和目标值之间的对应关系,所述目标键包括所述基础数据结构,所述目标值包括所述基础数据结构和所述第一不定数据结构中的至少一项;
c)第二不定数据结构,所述第二不定数据结构包括所述第一不定数据结构和所述映射数据结构中的至少一项。
图4是本发明提供的电子设备的结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行自适应协议的数据序列化方法,该方法包括:
将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项;
在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息;
在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息;
基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的自适应协议的数据序列化方法,该方法包括:
将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项;
在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息;
在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息;
基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的自适应协议的数据序列化方法,该方法包括:
将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项;
在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息;
在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息;
基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种自适应协议的数据序列化方法,其特征在于,包括:
将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项;
在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息;
在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息;
基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
2.根据权利要求1所述的自适应协议的数据序列化方法,其特征在于,所述第二协议数据还包括扩展操作指示信息;
所述基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作,包括:
基于所述第二协议数据中的扩展操作指示信息,对各所述第一信息和各所述第二信息中的至少一项执行对应的扩展操作,得到第三信息;
基于各所述第一信息、各所述第二信息和所述第三信息,对所述第二协议数据执行序列化操作或反序列化操作。
3.根据权利要求2所述的自适应协议的数据序列化方法,其特征在于,所述扩展操作指示信息包括以下至少一项:
第一指示信息,用于指示序列化后的数据的字节序为Moto序;
第二指示信息,用于指示序列化后的数据的字节序为Intel序;
第三指示信息,用于指示对数据补零至4字节的整数倍;
第四指示信息,用于指示所述第二协议数据中字符串的第一长度指示信息与第一数据内容之间的第一对应关系,所述第一长度指示信息用于指示所述字符串执行序列化操作后的第一数据内容的字节长度;
第五指示信息,用于指示所述第二协议数据中阵列Array的第二长度指示信息与第二数据内容之间的第二对应关系,所述第二长度指示信息用于指示所述Array执行序列化操作后的第二数据内容的字节长度。
4.根据权利要求3所述的自适应协议的数据序列化方法,其特征在于,在所述扩展操作指示信息包括所述第四指示信息的情况下,支持在执行序列化操作的序列化数据中,所述第一长度指示信息与所述第一数据内容的位置不相邻。
5.根据权利要求3所述的自适应协议的数据序列化方法,其特征在于,在所述扩展操作指示信息包括所述第五指示信息的情况下,支持在执行序列化操作的序列化数据中,所述第二长度指示信息与所述第二数据内容的位置不相邻。
6.根据权利要求1至5任一项所述的自适应协议的数据序列化方法,其特征在于,所述基础数据结构包括以下至少一项:
不同字节数对应的键值信息;
有符号的不同字节数对应的键值信息;
无符号的不同字节数对应的键值信息;
定长字符串的键值信息;
不定长字符串的键值信息;
支持BCD格式的键值信息;
支持数据块格式的键值信息;
支持Bool格式的键值信息;
支持Array格式的键值信息。
7.根据权利要求6所述的自适应协议的数据序列化方法,其特征在于,所述扩展数据结构包括以下至少一项:
第一不定数据结构,所述第一不定数据结构包括所述至少两个基础数据结构的组合;
映射数据结构,所述映射数据结构包括目标键和目标值之间的对应关系,所述目标键包括所述基础数据结构,所述目标值包括所述基础数据结构和所述第一不定数据结构中的至少一项;
第二不定数据结构,所述第二不定数据结构包括所述第一不定数据结构和所述映射数据结构中的至少一项。
8.一种自适应协议的数据序列化装置,其特征在于,包括:
转换模块,用于将待序列化的第一协议数据转换成第二协议数据,对所述第二协议数据中的数据结构进行遍历;其中,所述第二协议数据中的数据结构包括基础数据结构和扩展数据结构中的至少一项,所述扩展数据结构包括至少两个基础数据结构的组合和子扩展数据结构中的至少一项;
第一获取模块,用于在当前遍历的目标数据结构为所述基础数据结构的情况下,基于预先设置的基础数据结构的定义,获取所述目标数据结构的第一信息;
第二获取模块,用于在当前遍历的目标数据结构为所述扩展数据结构的情况下,遍历所述扩展数据结构中的数据结构,对遍历到的所述子扩展数据结构,将所述子扩展数据结构作为所述扩展数据结构,返回执行所述遍历所述扩展数据结构中的数据结构的步骤;对遍历到的各所述基础数据结构,将各所述基础数据结构作为所述目标数据结构,基于所述基础数据结构的定义,获取所述目标数据结构的第二信息;
处理模块,用于基于所述第二协议数据对应的各所述第一信息和各所述第二信息,对所述第二协议数据执行序列化操作或反序列化操作。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述自适应协议的数据序列化方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述自适应协议的数据序列化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311205133.8A CN116932615A (zh) | 2023-09-19 | 2023-09-19 | 自适应协议的数据序列化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311205133.8A CN116932615A (zh) | 2023-09-19 | 2023-09-19 | 自适应协议的数据序列化方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116932615A true CN116932615A (zh) | 2023-10-24 |
Family
ID=88388301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311205133.8A Pending CN116932615A (zh) | 2023-09-19 | 2023-09-19 | 自适应协议的数据序列化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932615A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150178292A1 (en) * | 2013-05-07 | 2015-06-25 | Tencent Technology (Shenzhen) Company Limited | Methods and systems for data serialization and deserialization |
CN111680061A (zh) * | 2020-06-11 | 2020-09-18 | 腾讯科技(深圳)有限公司 | 一种数据存取方法、装置、设备和存储介质 |
CN114564509A (zh) * | 2020-11-27 | 2022-05-31 | Oppo广东移动通信有限公司 | 序列化方法、反序列化方法、设备、芯片以及介质 |
CN114691105A (zh) * | 2022-02-24 | 2022-07-01 | 智己汽车科技有限公司 | 一种整车soa架构下基于someip协议的数据处理方法和装置 |
CN116132511A (zh) * | 2023-02-15 | 2023-05-16 | 中国航空无线电电子研究所 | 基于代理的传感器设备跨总线跨协议接入dds网络系统 |
CN116560629A (zh) * | 2023-05-25 | 2023-08-08 | 深圳前海微众银行股份有限公司 | 一种数据传输对象的序列化方法、装置、介质和设备 |
-
2023
- 2023-09-19 CN CN202311205133.8A patent/CN116932615A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150178292A1 (en) * | 2013-05-07 | 2015-06-25 | Tencent Technology (Shenzhen) Company Limited | Methods and systems for data serialization and deserialization |
CN111680061A (zh) * | 2020-06-11 | 2020-09-18 | 腾讯科技(深圳)有限公司 | 一种数据存取方法、装置、设备和存储介质 |
CN114564509A (zh) * | 2020-11-27 | 2022-05-31 | Oppo广东移动通信有限公司 | 序列化方法、反序列化方法、设备、芯片以及介质 |
CN114691105A (zh) * | 2022-02-24 | 2022-07-01 | 智己汽车科技有限公司 | 一种整车soa架构下基于someip协议的数据处理方法和装置 |
CN116132511A (zh) * | 2023-02-15 | 2023-05-16 | 中国航空无线电电子研究所 | 基于代理的传感器设备跨总线跨协议接入dds网络系统 |
CN116560629A (zh) * | 2023-05-25 | 2023-08-08 | 深圳前海微众银行股份有限公司 | 一种数据传输对象的序列化方法、装置、介质和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733689B (zh) | 一种json文本的比对方法和装置 | |
CN109902274B (zh) | 一种将json字符串转化为thrift二进制流的方法及系统 | |
CN107544948B (zh) | 一种基于MapReduce的矢量文件转换方法和装置 | |
WO2021072874A1 (zh) | 基于双数组的位置查询方法、装置、计算机设备及存储介质 | |
WO2020140937A1 (zh) | 物联网标识的识别方法、装置及终端设备 | |
CN104102549B (zh) | 一种实现多线程互斥操作的方法、装置和芯片 | |
CN112182036A (zh) | 数据的发送与写入方法、装置、电子设备及可读存储介质 | |
CN114020272A (zh) | 一种序列化编码、解码方法、装置及电子设备 | |
CN116932615A (zh) | 自适应协议的数据序列化方法及装置 | |
US9965344B2 (en) | Method and apparatus for transmitting data in a robot operating system | |
CN117236236A (zh) | 一种芯片设计数据管理方法、装置、电子设备及存储介质 | |
CN111507430A (zh) | 基于矩阵乘法的特征编码方法、装置、设备及介质 | |
CN115604365B (zh) | 数据编解码方法、装置、电子设备及可读存储介质 | |
CN116467372A (zh) | 一种数据库自动转换方法、装置、电子设备及存储介质 | |
WO2022218337A1 (zh) | 一种弱内存序架构下的代码检查方法及相应设备 | |
CN115904240A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN115168022A (zh) | 对象处理方法 | |
CN111475558A (zh) | 一种数据转换方法、装置、存储介质和电子设备 | |
CN110797082A (zh) | 基因测序数据的存储读取方法及系统 | |
CN101141438B (zh) | 消息数据单元的分析方法 | |
CN112583616B (zh) | 一种物联网设备、物联网平台及其接入物联网平台的方法 | |
CN112230983B (zh) | 信息处理方法、电子设备和介质 | |
CN111680051B (zh) | 一种数据序列化和反序列化方法、设备及存储介质 | |
CN116881517A (zh) | 一种数据库数据处理方法及系统 | |
US11550572B2 (en) | Splitting vector instructions into microinstructions for parallel execution based on index comparisons of completed microinstructions |
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 |