CN106326377A - 序列化方法、反序列化方法、装置和系统 - Google Patents
序列化方法、反序列化方法、装置和系统 Download PDFInfo
- Publication number
- CN106326377A CN106326377A CN201610669929.2A CN201610669929A CN106326377A CN 106326377 A CN106326377 A CN 106326377A CN 201610669929 A CN201610669929 A CN 201610669929A CN 106326377 A CN106326377 A CN 106326377A
- Authority
- CN
- China
- Prior art keywords
- data
- type
- title
- item
- data item
- 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
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/21—Design, administration or maintenance of databases
-
- 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
-
- 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)
- Software Systems (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种序列化方法、反序列化方法、装置和系统。用于结构化数据的序列化方法包括:根据所述结构化数据生成序列化数据的标签部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称;根据所述结构化数据生成所述序列化数据的数据部分,所述数据部分包括所述一个或多个数据项的数据值;根据所述标签部分和所述数据部分,生成所述序列化数据,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次。这样,在数据部分不需要通过重复出现数据项的类型和名称来分隔数据值,因此,减少了序列化数据的长度,节省了序列化数据的存储空间。
Description
技术领域
本公开涉及计算机领域,具体地,涉及一种序列化方法、反序列化方法、装置和系统。
背景技术
随着现代社会中信息数据的爆炸式增长,每天都有大量的数据交换过程。序列化是指将结构化的数据按一定的编码规范转换成指定格式的过程,反序列化是指将转成指定格式的数据解析成原始的结构化数据的过程。在存储资源有限的情况下,减少序列化数据的长度对资源的节省很重要。
发明内容
本公开的目的是提供一种简单易行的序列化方法、反序列化方法、装置和系统。
为了实现上述目的,本公开提供一种用于结构化数据的序列化方法。所述方法包括:根据所述结构化数据生成序列化数据的标签部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称;根据所述结构化数据生成所述序列化数据的数据部分,所述数据部分包括所述一个或多个数据项的数据值;根据所述标签部分和所述数据部分,生成所述序列化数据,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次。
可选地,每个数据项包括依次排列的类型、类型分隔符、名称、名称分隔符;或者,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称。
可选地,所述数据部分包括依次排列的所述一个或多个数据项的数据值、数据分隔符;或者,所述数据部分包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值。
可选地,所述根据所述结构化数据生成所述序列化数据的数据部分的步骤包括:将所述结构化数据中的数字类型的数据值转化为256进制;根据转化后的数据值生成所述序列化数据的数据部分。
可选地,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称,所述数据部分包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值,所述类型用数字表示,其中,所述方法还包括:将所述类型转化为256进制;将所述名称长度和所述数据长度转化为256进制,并更新所述数据长度位;将更新后的数据长度位转化为256进制;删除所述类型长度、所述类型长度位和所述名称长度位。
本公开还提供一种用于序列化数据的反序列化方法。所述方法包括:获取所述序列化数据中的标签部分和数据部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称,所述数据部分包括所述一个或多个数据项的数据值,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次;从所述标签部分提取出所述一个或多个数据项的类型和名称,从所述数据部分提取出所述一个或多个数据项的数据值;根据所述一个或多个数据项的类型、名称和数据值生成结构化数据。
可选地,所述结构化数据中数字类型的数据值为256进制,所述方法还包括:将所述结构化数据中数字类型的数据值转化为十进制。
本公开还提供一种用于结构化数据的序列化装置。所述装置包括:标签部分生成模块,用于根据所述结构化数据生成序列化数据的标签部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称;数据部分生成模块,用于根据所述结构化数据生成所述序列化数据的数据部分,所述数据部分包括所述一个或多个数据项的数据值;序列化数据生成模块,用于根据所述标签部分和所述数据部分,生成所述序列化数据,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次。
本公开还提供一种用于序列化数据的反序列化装置。所述装置包括:获取模块,用于获取所述序列化数据中的标签部分和数据部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称,所述数据部分包括所述一个或多个数据项的数据值,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次;提取模块,用于从所述标签部分提取出所述一个或多个数据项的类型和名称,从所述数据部分提取出所述一个或多个数据项的数据值;结构化数据生成模块,用于根据所述一个或多个数据项的类型、名称和数据值生成结构化数据。
本公开还提供一种系统,包括本公开提供的用于结构化数据的序列化装置和用于序列化数据的反序列化装置。
通过上述技术方案,序列化数据的标签部分包括全部的数据项的类型和名称,在数据部分不需要通过重复出现数据项的类型和名称来分隔数据值,因此,减少了序列化数据的长度,节省了序列化数据的存储空间。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是一示例性实施例提供的现有技术的序列化数据的结构示意图;
图2是一示例性实施例提供的本公开的用于结构化数据的序列化方法的流程图;
图3是一示例性实施例提供的本公开的序列化数据的标签部分的结构示意图;
图4是另一示例性实施例提供的本公开的序列化数据的标签部分的结构示意图;
图5是又一示例性实施例提供的本公开的序列化数据的标签部分的结构示意图;
图6是一示例性实施例提供的本公开的序列化数据的数据部分的结构示意图;
图7是由图5的标签部分和图6的数据部分组成的序列化数据的结构示意图;
图8是又一示例性实施例提供的本公开的用于结构化数据的序列化方法的流程图;
图9是一示例性实施例提供的本公开的用于序列化数据的反序列化方法的流程图;
图10是一示例性实施例提供的本公开的用于结构化数据的序列化装置的框图;
图11是一示例性实施例提供的本公开的用于序列化数据的反序列化装置的框图;
图12是一示例性实施例提供的本公开的系统的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
在结构化数据中,通常可以存储有多个数据对象的信息,每个数据对象的信息可以包括多个数据项的名称、类型和数据值。数据对象可以是一个人。例如,数据化结构中存储有Mary、Andy等多个人(数据对象)的姓名、性别、年龄、工资、工作年限、生日等多个数据项的数据值。
图1是一示例性实施例提供的现有技术的序列化数据的结构示意图。如图1所示,A1、A2、……An分别表示数据对象A的n个数据项。在图1所示的序列化数据中,存储有每个数据对象(A~N)的n个数据项的数据值。与每个数据值对应地都有该数据值的数据项名称和类型,通过名称和类型来描述该数据值,通过分隔符来分隔。当序列化数据中包括的数据对象和数据项较多时,其中重复出现的数据项名称和类型占据了很大的长度。
本公开涉及到对用于结构化数据(例如POJO对象)进行序列化的方法。图2是一示例性实施例提供的本公开的用于结构化数据的序列化方法的流程图。如图2所示,所述方法包括以下步骤。
在步骤S11中,根据结构化数据生成序列化数据的标签部分。标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称。
其中,数据项个数表示总共有多少个数据项。数据项个数能够指示标签部分延续到哪里结束,起到了标签部分结束时的分隔符的作用。其中,数据项的名称、类型可以通过各种分隔方法进行分隔。例如,可以通过分隔符或者长度位的方法进行分隔。
在一实施例中,每个数据项可以包括依次排列的类型、类型分隔符、名称、名称分隔符。图3是一示例性实施例提供的本公开的序列化数据的标签部分的结构示意图。其中,类型分隔符和名称分隔符可以是相同的常用的分隔符。这样,通过分隔符,将各个数据项的类型、名称分隔开来,形成序列化数据,便于对各个字符进行识别。
在另一实施例中,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称。图4是另一示例性实施例提供的本公开的序列化数据的标签部分的结构示意图。其中,类型长度是用于描述类型所占的长度,也就是,类型长度能够指示类型的字节延续到哪里结束,起到了类型后的分隔符的作用。类型长度位用于描述类型长度所占的长度,也就是,类型长度位能够指示类型长度的字节延续到哪里结束,起到了类型长度后的分隔符的作用。
相似地,名称长度是用于描述名称所占的长度,也就是,名称长度能够指示名称的字节延续到哪里结束,起到了名称后的分隔符的作用。名称长度位用于描述名称长度所占的长度,也就是,名称长度位能够指示名称长度的字节延续到哪里结束,起到了名称长度后的分隔符的作用。
例如,数据项的名称为“name”,包括4个字节,则名称长度为4。由于名称长度为4,包括1个字节,则名称长度位为1。
图5是又一示例性实施例提供的本公开的序列化数据的标签部分的结构示意图。如图5所示,每个方格表示一个字节。第一个“3”表示数据项个数,也就是,总共有3个数据项。接下来,“1、1、3”分别是第一个数据项的类型长度位、类型长度、类型。“1、4、name”分别是第一个数据项的名称长度位、名称长度、名称。接下来,“1、1、1”分别是第二个数据项的类型长度位、类型长度、类型。“1、3、age”分别是第二个数据项的名称长度位、名称长度、名称。接下来,“1、1、1”分别是第三个数据项的类型长度位、类型长度、类型。“1、6、salary”分别是第三个数据项的名称长度位、名称长度、名称。
其中,三个数据项的类型分别用数字3、1、1来表示。此处,可以预先将各个类型与不同的数字对应,在序列化数据中,类型用对应的数字来表示。例如,用数字1代表int类型,数字2代表long类型、数字3代表string类型、数字4代表double类型、数字5代表char类型、数字6代表float类型等。这样,用数字代替字符,能够对序列化数据进行简化,并能够减小序列化数据的长度。
图5中的标签部分表示,在之后的数据部分中包括各个数据对象的name、age、salary的数据值,而数据值之间可以通过数据项的名称之外的其他方法进行分隔。
在步骤S12中,根据结构化数据生成序列化数据的数据部分。数据部分包括所述一个或多个数据项的数据值。
也就是,数据部分不再出现各个数据项的名称,数据部分可以包括数据项的数据值,各个数据值之间可以通过分隔符或长度位标记的方法进行分隔。
在一实施例中,数据部分可以包括依次排列的所述一个或多个数据项的数据值、数据分隔符。通过分隔符,将各个数据项的数据值分隔开来,形成序列化数据,便于对各个字符进行识别。
在另一实施例中,数据部分包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值。
其中,数据长度是用于描述数据值所占的长度,也就是,数据长度能够指示数据值的字节延续到哪里结束,起到了数据值后的分隔符的作用。数据长度位用于描述数据长度所占的长度,也就是,数据长度位能够指示数据长度的字节延续到哪里结束,起到了数据长度后的分隔符的作用。
图6是一示例性实施例提供的本公开的序列化数据的数据部分的结构示意图。如图6所示,数据部分列出了多个数据对象的数据项的数据长度位、数据长度和数据值。其中,“1、4、Andy”分别是第一个数据对象的第一个数据项的数据长度位、数据长度、数据值。接下来,“1、2、20”分别是第一个数据对象的第二个数据项的数据长度位、数据长度、数据值。接下来,“1、4、5000”分别是第一个数据对象的第三个数据项的数据长度位、数据长度、数据值。
对应于图5中的标签部分,图6数据部分中记载了第一个数据对象的name为Andy,age为20,salary为5000;第二个数据对象的name为Jerry,age为30,salary为7000;第三个数据对象的name为Tom,age为50,salary为15000。
其中,Andy前的数据长度4表示Andy这个数据值占4个字节。而数据长度4之前的数据长度位1表示数据长度4占了1个字节。也就是,数据长度4表示数据长度之后的4个字节表示的是数据值,数据长度位1表示数据长度位之后的1个字节表示的是数据长度。
在图6所示的实施例中,数据值不用数据名称来标注和分割,也不用分隔符来分割,因此,避免了由分隔符引发的混淆问题,并且避免了数据名称的重复,因此缩短了序列化数据的长度,节省了存储空间。
可以理解的是,步骤S11和步骤S12在图2中是同时执行的,也可以以其他任意的顺序来执行。
返回图2,在步骤S13中,根据标签部分和数据部分,生成序列化数据,其中,数据项的类型和名称在序列化数据中仅出现一次。
图7是由图5的标签部分和图6的数据部分组成的序列化数据的结构示意图。由图7可以看出,本公开中标签部分和数据部分并不是以穿插的形式(例如,如图1所示)构成序列化数据的,而是标签部分和数据部分分别是两个独立的整体。也就是,将整个数据部分直接附在整个标签部分之后就可以得到序列化数据。其中,数据部分可以包括多个数据对象的数据值,并且,每个数据对象的数据值包括该数据对象的各个数据项的数据值。
通过上述技术方案,序列化数据的标签部分包括全部的数据项的类型和名称,在数据部分不需要通过重复出现数据项的类型和名称来分隔数据值,因此,减少了序列化数据的长度,节省了序列化数据的存储空间。
以上实施例中,如果数字类型的数据值都是十进制的,在数据值比较大时,就会有较多的字节,形成的序列化数据长度比较长。在本公开的又一示例性实施例中,将根据所述结构化数据生成所述序列化数据的数据部分的步骤(步骤S12)可以包括以下步骤。
在步骤S121中,将结构化数据中的数字类型的数据值转化为256进制。
在步骤S122中,根据转化后的数据值生成序列化数据的数据部分。
也就是,数字类型的数据值不是256进制时(通常为十进制),首先将其转换成256进制,然后再放到数据部分中的适当位置。这样,生成的序列化数据的长度能够大幅减小,节省了存储空间。
在上述实施例中,序列化数据中的数据值为256进制,序列化数据中的其他数字类型的字符(例如,数据长度位、数据长度、类型长度位、类型长度、名称长度位、名称长度)仍然可以是十进制。
在本公开的又一示例性实施例中,还可以将上述数据长度位等数字也转换为256进制。这样就进一步缩短了序列化数据的长度。以目前计算机的存储和计算能力,数据项的类型在256个之内,因此,1个字节以256进制形式足够存放所有类型,可以将类型长度位、类型长度和名称长度位从序列化数据中去掉。由于数据值可能比较大,对应的数据长度位和数据长度可以保留。
因此,考虑到上述情况,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称,数据部分可以包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值,所述类型用数字表示。图8是又一示例性实施例提供的本公开的用于结构化数据的序列化方法的流程图。如图8所示,所述方法还可以包括以下步骤。
在步骤S14中,将类型转化为256进制。
在步骤S15中,将名称长度和数据长度转化为256进制,并更新数据长度位。
也就是,同时将名称长度和数据长度进行转化,转化之后各自所占的字节长度有变化,根据转化后的数据长度计算并更新数据长度位。
在步骤S16中,将更新后的数据长度位转化为256进制。
在步骤S17中,删除类型长度、类型长度位和名称长度位。
由于受现有计算机计算能力的限制,1个字节以256进制形式足够存放所有类型,因此,可以将类型长度位、类型长度从序列化数据中去掉。同理,可以将名称长度位从序列化数据中去掉。这样,就极大地缩短了序列化数据的长度。
针对本公开的上述序列化方法生成的序列化数据,本公开还提供一种反序列化方法。图9是一示例性实施例提供的本公开的用于序列化数据的反序列化方法的流程图。如图9所示,所述反序列化方法可以包括以下步骤。
在步骤S21中,获取序列化数据中的标签部分和数据部分。标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称。数据部分包括一个或多个数据项的数据值。其中,数据项的类型和名称在序列化数据中仅出现一次。
具体地,可以根据数据项个数、数据项的类型和名称确定标签部分的范围。例如,数据项个数为3时,在第3个数据项的类型和名称完结处,将序列化数据分割成标签部分和数据部分。
在步骤S22中,从标签部分提取出一个或多个数据项的名称,从数据部分提取出一个或多个数据项的数据值。
具体地,当标签部分中每个数据项包括依次排列的类型、类型分隔符、名称、名称分隔符时,可以根据分隔符从中识别出名称并提取出来。当标签部分中每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称时,可以根据长度位、长度计算出名称的起始位置和终止位置,从而从中提取出名称。
当数据部分包括依次排列的一个或多个数据项的数据值、数据分隔符时,可以根据分隔符从中识别出数据值并提取出来。当数据部分包括依次排列的一个或多个数据项的数据长度位、数据长度、数据值时,可以根据长度位、长度计算出数据值的起始位置和终止位置,从而从中提取出数据值。
其中,可以理解的是,名称和数据值可以根据分别在序列化数据中的先后顺利进行一一对应。
在步骤S23中,根据一个或多个数据项的类型、名称和数据值生成结构化数据。
具体地,序列化数据中可以存储有多个数据对象的信息,每个数据对象的信息可以包括多个数据项的名称、类型和数据值。对于其中任一个数据对象,都可以将从标签部分提取出来的数据项的名称、类型,与从数据部分提取出来的数据值对应地放在结构化数据中。遍历序列化数据中的全部数据对象的信息,对应地放在结构化数据中,就可以生成与所述序列化数据对应的结构化数据。
为了节省结构化数据的长度,减小所占的存储空间,结构化数据中数字类型的数据值可以为256进制。当结构化数据中数字类型的数据值为256进制时,还可以将其转化为易识别的十进制。在本公开的又一实施例中,所述方法还可以包括步骤S24。
在步骤S24中,将结构化数据中数字类型的数据值转化为十进制。
这样,用户能够对结构化数据进行更直观地浏览,易于理解,容易发现错误。
本公开还提供一种用于结构化数据的序列化装置。图10是一示例性实施例提供的本公开的用于结构化数据的序列化装置的框图。如图10所示,所述用于结构化数据的序列化装置10可以包括标签部分生成模块11、数据部分生成模块12和序列化数据生成模块13。
标签部分生成模块11用于根据所述结构化数据生成序列化数据的标签部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称。
数据部分生成模块12用于根据所述结构化数据生成所述序列化数据的数据部分,所述数据部分包括所述一个或多个数据项的数据值。
序列化数据生成模块13用于根据所述标签部分和所述数据部分,生成所述序列化数据,其中,数据项的类型和名称在序列化数据中仅出现一次。
可选地,每个数据项包括依次排列的类型、类型分隔符、名称、名称分隔符;或者,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称。
可选地,所述数据部分包括依次排列的所述一个或多个数据项的数据值、数据分隔符;或者,所述数据部分包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值。
可选地,所述数据部分生成模块12可以包括转化子模块121和生成子模块122。
转化子模块121用于将所述结构化数据中的数字类型的数据值转化为256进制。
生成子模块122用于根据转化后的数据值生成所述序列化数据的数据部分。
在一实施例中,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称,所述数据部分包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值,所述类型用数字表示。其中,用于结构化数据的序列化装置10还可以包括第一转化模块14、第一转化更新模块15、第二转化模块16和删除模块17。
第一转化模块14用于将所述类型转化为256进制。
第一转化更新模块15用于将所述名称长度和所述数据长度转化为256进制,并更新所述数据长度位。
第二转化模块16用于将更新后的数据长度位转化为256进制。
删除模块17用于删除类型长度、类型长度位和名称长度位。
通过上述技术方案,序列化数据的标签部分包括全部的数据项的类型和名称,在数据部分不需要通过重复出现数据项的类型和名称来分隔数据值,因此,减少了序列化数据的长度,节省了序列化数据的存储空间。
本公开还提供一种用于序列化数据的反序列化装置。图11是一示例性实施例提供的本公开的用于序列化数据的反序列化装置的框图。如图11所示,用于序列化数据的反序列化装置20可以包括获取模块21、提取模块22和结构化数据生成模块23。
获取模块21用于获取所述序列化数据中的标签部分和数据部分。所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称,所述数据部分包括所述一个或多个数据项的数据值,其中,数据项的类型和名称在序列化数据中仅出现一次。
提取模块22用于从所述标签部分提取出所述一个或多个数据项的名称,从所述数据部分提取出所述一个或多个数据项的数据值。
结构化数据生成模块23用于根据所述一个或多个数据项的类型、名称和数据值生成结构化数据。
可选地,每个数据项包括依次排列的类型、类型分隔符、名称、名称分隔符;或者,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称。
可选地,所述数据部分包括依次排列的所述一个或多个数据项的数据值、数据分隔符;或者,所述数据部分包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值。
在一实施例中,所述结构化数据中数字类型的数据值为256进制。用于序列化数据的反序列化装置20还可以包括第三转化模块24。
第三转化模块24用于将所述结构化数据中数字类型的数据值转化为十进制。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开还提供一种系统。图12是一示例性实施例提供的本公开的系统的框图。如图12所示,所述系统100包括用于结构化数据的序列化装置10和用于序列化数据的反序列化装置20。其中,用于结构化数据的序列化装置10可以包括标签部分生成模块、数据部分生成模块和序列化数据生成模块。
标签部分生成模块用于根据所述结构化数据生成序列化数据的标签部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称;数据部分生成模块用于根据所述结构化数据生成所述序列化数据的数据部分,所述数据部分包括所述一个或多个数据项的数据值;序列化数据生成模块用于根据所述标签部分和所述数据部分,生成所述序列化数据,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次。
用于序列化数据的反序列化装置20可以包括获取模块、提取模块和结构化数据生成模块。
获取模块用于获取所述序列化数据中的所述标签部分和所述数据部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称,所述数据部分包括所述一个或多个数据项的数据值;提取模块用于从所述标签部分提取出所述一个或多个数据项的类型和名称,从所述数据部分提取出所述一个或多个数据项的数据值;结构化数据生成模块,用于根据所述一个或多个数据项的类型、名称和数据值生成结构化数据。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种用于结构化数据的序列化方法,其特征在于,所述方法包括:
根据所述结构化数据生成序列化数据的标签部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称;
根据所述结构化数据生成所述序列化数据的数据部分,所述数据部分包括所述一个或多个数据项的数据值;
根据所述标签部分和所述数据部分,生成所述序列化数据,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次。
2.根据权利要求1所述的方法,其特征在于,每个数据项包括依次排列的类型、类型分隔符、名称、名称分隔符;或者,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称。
3.根据权利要求1所述的方法,其特征在于,所述数据部分包括依次排列的所述一个或多个数据项的数据值、数据分隔符;或者,所述数据部分包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值。
4.根据权利要求1所述的方法,其特征在于,所述根据所述结构化数据生成所述序列化数据的数据部分的步骤包括:
将所述结构化数据中的数字类型的数据值转化为256进制;
根据转化后的数据值生成所述序列化数据的数据部分。
5.根据权利要求4所述的方法,其特征在于,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称,所述数据部分包括依次排列的所述一个或多个数据项的数据长度位、数据长度、数据值,所述类型用数字表示,其中,所述方法还包括:
将所述类型转化为256进制;
将所述名称长度和所述数据长度转化为256进制,并更新所述数据长度位;
将更新后的数据长度位转化为256进制;
删除所述类型长度、所述类型长度位和所述名称长度位。
6.一种用于序列化数据的反序列化方法,其特征在于,所述方法包括:
获取所述序列化数据中的标签部分和数据部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称,所述数据部分包括所述一个或多个数据项的数据值,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次;
从所述标签部分提取出所述一个或多个数据项的类型和名称,从所述数据部分提取出所述一个或多个数据项的数据值;
根据所述一个或多个数据项的类型、名称和数据值生成结构化数据。
7.根据权利要求6所述的方法,其特征在于,每个数据项包括依次排列的类型、类型分隔符、名称、名称分隔符;或者,每个数据项包括依次排列的类型长度位、类型长度、类型、名称长度位、名称长度、名称。
8.一种用于结构化数据的序列化装置,其特征在于,所述装置包括:
标签部分生成模块,用于根据所述结构化数据生成序列化数据的标签部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称;
数据部分生成模块,用于根据所述结构化数据生成所述序列化数据的数据部分,所述数据部分包括所述一个或多个数据项的数据值;
序列化数据生成模块,用于根据所述标签部分和所述数据部分,生成所述序列化数据,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次。
9.一种用于序列化数据的反序列化装置,其特征在于,所述装置包括:
获取模块,用于获取所述序列化数据中的标签部分和数据部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称,所述数据部分包括所述一个或多个数据项的数据值,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次;
提取模块,用于从所述标签部分提取出所述一个或多个数据项的类型和名称,从所述数据部分提取出所述一个或多个数据项的数据值;
结构化数据生成模块,用于根据所述一个或多个数据项的类型、名称和数据值生成结构化数据。
10.一种系统,包括用于结构化数据的序列化装置和用于序列化数据的反序列化装置,其特征在于,
所述用于结构化数据的序列化装置包括:
标签部分生成模块,用于根据所述结构化数据生成序列化数据的标签部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称;
数据部分生成模块,用于根据所述结构化数据生成所述序列化数据的数据部分,所述数据部分包括所述一个或多个数据项的数据值;
序列化数据生成模块,用于根据所述标签部分和所述数据部分,生成所述序列化数据,其中,所述数据项的类型和名称在所述序列化数据中仅出现一次;
所述用于序列化数据的反序列化装置包括:
获取模块,用于获取所述序列化数据中的所述标签部分和所述数据部分,所述标签部分包括依次排列的数据项个数、一个或多个数据项,每个数据项包括类型和名称,所述数据部分包括所述一个或多个数据项的数据值;
提取模块,用于从所述标签部分提取出所述一个或多个数据项的类型和名称,从所述数据部分提取出所述一个或多个数据项的数据值;
结构化数据生成模块,用于根据所述一个或多个数据项的类型、名称和数据值生成结构化数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610669929.2A CN106326377A (zh) | 2016-08-15 | 2016-08-15 | 序列化方法、反序列化方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610669929.2A CN106326377A (zh) | 2016-08-15 | 2016-08-15 | 序列化方法、反序列化方法、装置和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106326377A true CN106326377A (zh) | 2017-01-11 |
Family
ID=57740388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610669929.2A Pending CN106326377A (zh) | 2016-08-15 | 2016-08-15 | 序列化方法、反序列化方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106326377A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109194720A (zh) * | 2018-08-15 | 2019-01-11 | 京信通信系统(中国)有限公司 | 主备机数据同步方法、装置和计算机设备 |
CN109542541A (zh) * | 2017-09-21 | 2019-03-29 | 北京国双科技有限公司 | 反序列化方法及装置 |
CN109614372A (zh) * | 2018-10-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种对象存储、读取方法、装置、及业务服务器 |
CN109871519A (zh) * | 2019-02-18 | 2019-06-11 | 北京思特奇信息技术股份有限公司 | 一种无层级结构的json反序列化方法、装置及存储介质 |
CN110442848A (zh) * | 2019-07-30 | 2019-11-12 | 中国工商银行股份有限公司 | 数据序列化和解序列方法及其装置、电子设备和介质 |
CN113312344A (zh) * | 2021-07-28 | 2021-08-27 | 阿里云计算有限公司 | 数据序列化、反序列化方法、设备、系统、介质及产品 |
CN114205179A (zh) * | 2021-12-14 | 2022-03-18 | 国网江苏省电力有限公司常州供电分公司 | 一种Modbus通信优化方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188614A1 (en) * | 1999-11-13 | 2002-12-12 | King Kevin D. | Software-based methodology for the storage and retrieval of diverse information |
CN101883130A (zh) * | 2009-05-07 | 2010-11-10 | 华为技术有限公司 | 页面流会话信息的保存方法及装置 |
CN101930455A (zh) * | 2010-07-30 | 2010-12-29 | 南京莱斯信息技术股份有限公司 | 一种结构化数据交换方法 |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN104077335A (zh) * | 2013-05-07 | 2014-10-01 | 腾讯科技(深圳)有限公司 | 一种结构化数据的序列化、反序列化方法、装置和系统 |
US20150193487A1 (en) * | 2014-01-06 | 2015-07-09 | International Business Machines Corporation | Efficient b-tree data serialization |
-
2016
- 2016-08-15 CN CN201610669929.2A patent/CN106326377A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188614A1 (en) * | 1999-11-13 | 2002-12-12 | King Kevin D. | Software-based methodology for the storage and retrieval of diverse information |
CN101883130A (zh) * | 2009-05-07 | 2010-11-10 | 华为技术有限公司 | 页面流会话信息的保存方法及装置 |
CN101930455A (zh) * | 2010-07-30 | 2010-12-29 | 南京莱斯信息技术股份有限公司 | 一种结构化数据交换方法 |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN104077335A (zh) * | 2013-05-07 | 2014-10-01 | 腾讯科技(深圳)有限公司 | 一种结构化数据的序列化、反序列化方法、装置和系统 |
US20150193487A1 (en) * | 2014-01-06 | 2015-07-09 | International Business Machines Corporation | Efficient b-tree data serialization |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542541A (zh) * | 2017-09-21 | 2019-03-29 | 北京国双科技有限公司 | 反序列化方法及装置 |
CN109194720A (zh) * | 2018-08-15 | 2019-01-11 | 京信通信系统(中国)有限公司 | 主备机数据同步方法、装置和计算机设备 |
CN109614372A (zh) * | 2018-10-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种对象存储、读取方法、装置、及业务服务器 |
CN109871519A (zh) * | 2019-02-18 | 2019-06-11 | 北京思特奇信息技术股份有限公司 | 一种无层级结构的json反序列化方法、装置及存储介质 |
CN110442848A (zh) * | 2019-07-30 | 2019-11-12 | 中国工商银行股份有限公司 | 数据序列化和解序列方法及其装置、电子设备和介质 |
CN110442848B (zh) * | 2019-07-30 | 2023-08-01 | 中国工商银行股份有限公司 | 数据序列化和解序列方法及其装置、电子设备和介质 |
CN113312344A (zh) * | 2021-07-28 | 2021-08-27 | 阿里云计算有限公司 | 数据序列化、反序列化方法、设备、系统、介质及产品 |
CN113312344B (zh) * | 2021-07-28 | 2022-01-04 | 阿里云计算有限公司 | 数据序列化、反序列化方法、设备、系统、介质及产品 |
CN114205179A (zh) * | 2021-12-14 | 2022-03-18 | 国网江苏省电力有限公司常州供电分公司 | 一种Modbus通信优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106326377A (zh) | 序列化方法、反序列化方法、装置和系统 | |
CN104753540B (zh) | 数据压缩方法、数据解压方法和装置 | |
CN101950284B (zh) | 中文分词方法及系统 | |
CN101558405B (zh) | 将主机系统数据库转换为开放系统数据库的转换装置和方法 | |
CN101576929B (zh) | 一种快速词条提示的实现方法 | |
CN103123618A (zh) | 文本相似度获取方法和装置 | |
CN110427604B (zh) | 表格整合方法和装置 | |
CN107608948A (zh) | 一种文本信息抽取模型的构建方法及装置 | |
CN101551710A (zh) | 一种维吾尔语输入系统及输入方法 | |
US8947272B2 (en) | Decoding encoded data | |
US20140214854A1 (en) | Extracting method, computer product, extracting system, information generating method, and information contents | |
CN102937994A (zh) | 一种基于停用词的相似文档查询方法 | |
CN108984626B (zh) | 一种数据处理方法、装置及服务器 | |
CN103336706A (zh) | 将伪代码转换为编程语言的系统和方法 | |
KR102035706B1 (ko) | 신재생에너지의 발전량 데이터를 모니터링하는 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 변형 방법 및 신재생에너지의 발전량 데이터를 모니터링하기 위한 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 전송 시스템 | |
CN106096014A (zh) | 基于dmr的混合长度文本集的文本聚类方法 | |
CN109937413B (zh) | 海量人群特征数据的处理方法及系统 | |
CN111625596A (zh) | 新能源实时消纳调度的多源数据同步共享方法及系统 | |
KR102087272B1 (ko) | 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 변형 방법 및 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 전송 시스템 | |
CN101799890A (zh) | 证照数据处理方法和系统 | |
CN101576877A (zh) | 一种快速分词的实现方法 | |
CN105224319A (zh) | 基于dom4j实现XBRL实例文档预览的方法 | |
JP5671676B2 (ja) | 文書データ変換装置及び文書変換プログラム | |
CN101707588A (zh) | 基于规则集的报文处理方法和装置 | |
CN109101503A (zh) | 一种创建组织结构层级关系树的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170111 |
|
RJ01 | Rejection of invention patent application after publication |