数据处理方法及装置与流程

文档序号:12463060阅读:193来源:国知局
数据处理方法及装置与流程

本发明涉及互联网应用技术领域,特别是一种数据处理方法及装置。



背景技术:

序列化(Serialization)是将对象的属性数据(或状态信息)转换为可以存储或传输的形式的过程。在序列化期间,将对象的属性数据以序列化数据写入到临时或持久性存储区。以后,可以通过从存储区中读取、解析或反序列化该序列化数据,重新创建该对象。

目前,常见的序列化和反序列化协议有XML(Extensible Markup Language,可扩展标记语言)、JSON(JavaScript Object Notation,JavaScript对象表示法)、Protobuf(Protocol Buffers,它是谷歌公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可以用于数据存储、通信协议等方面)、Thrift(它是脸书公司开发的一个软件框架,使得不同语言开发的系统可以通过该框架进行通信)和Avro(它是一个数据序列化的系统)等。以JSON为例,JSON起源于弱类型语言JavaScript,它的产生来自于一种称之为“Associative array(关联数组)”的概念,其本质是就是采用“Attribute-value(属性-值)”的方式来描述对象。下面的例子是采用JSON协议对某个对象进行序列化后的结果,{"userid":1,"name":"messi","address":[{"city":"北京","postcode":"10000","street":"wangjingdonglu"}]},在对该序列化数据进行解析或反序列化时,需要一个一个字符往后解析,判断是不是“:”(冒号)或者“,”(逗号)等字符,进而来提取该对象的属性和属性值,这样的解析效率不高,耗时较长,会导致获取该对象的应用的界面出现卡顿,影响用户体验。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据处理方法及相应的装置。

依据本发明的一方面,提供了一种数据处理方法,包括:

获取第一序列化数据,对所述第一序列化数据进行解析,得到所述第一序列化数据对应的对象;

获取并分析所述对象的属性数据,确定所述属性数据的相关信息;

基于所述属性数据的相关信息生成所述对象对应的第二序列化数据;

存储所述对象对应的第二序列化数据。

可选地,在存储所述对象对应的第二序列化数据之后,所述方法还包括:

当接收到本地调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象,并提供给调用方。

可选地,在存储所述对象对应的第二序列化数据之后,所述方法还包括:

当接收到外部调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

将获取的所述对象对应的第二序列化数据提供给调用方,由所述调用方利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象。

可选地,所述属性数据包括属性和属性值,所述属性数据的相关信息包括属性的长度和属性值的长度。

可选地,基于所述属性数据的相关信息生成所述对象对应的第二序列化数据,包括:

基于所述对象的属性的长度和属性值的长度,生成所述对象对应的第二序列化数据,其中,所述第二序列化数据中包括所述对象的属性的长度和属性值的长度。

可选地,所述第二序列化数据中还包括对象开始的标识和对象结束的标识。

可选地,所述第二序列化数据中还包括所述对象的类型。

可选地,所述对象的类型包括下列任意之一:整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组。

可选地,在基于所述属性数据的相关信息生成所述对象对应的第二序列化数据时,所述方法还包括:

为所述对象的属性数据建立索引;

将所述第二序列化数据中的所述对象的属性数据以建立的索引值表示。

可选地,所述获取第一序列化数据,包括:

接收来自外部的第一序列化数据;或者

从本地存储器处获取第一序列化数据。

可选地,所述第二序列化数据为字符型数据。

可选地,当所述第一序列化数据为json格式的序列化数据时,对所述第一序列化数据进行解析,包括:

采用fastjson组件对所述第一序列化数据进行解析。

依据本发明的另一方面,还提供了一种数据处理装置,包括:

解析模块,适于获取第一序列化数据,对所述第一序列化数据进行解析,得到所述第一序列化数据对应的对象;

确定模块,适于获取并分析所述对象的属性数据,确定所述属性数据的相关信息;

生成模块,适于基于所述属性数据的相关信息生成所述对象对应的第二序列化数据;

存储模块,适于存储所述对象对应的第二序列化数据。

可选地,所述装置还包括:

第一处理模块,适于在所述存储模块存储所述对象对应的第二序列化数据之后,当接收到本地调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象,并提供给调用方。

可选地,所述装置还包括:

第二处理模块,适于在所述存储模块存储所述对象对应的第二序列化数据之后,当接收到外部调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

将获取的所述对象对应的第二序列化数据提供给调用方,由所述调用方利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象。

可选地,所述属性数据包括属性和属性值,所述属性数据的相关信息包括属性的长度和属性值的长度。

可选地,所述生成模块还适于:

基于所述对象的属性的长度和属性值的长度,生成所述对象对应的第二序列化数据,其中,所述第二序列化数据中包括所述对象的属性的长度和属性值的长度。

可选地,所述第二序列化数据中还包括对象开始的标识和对象结束的标识。

可选地,所述第二序列化数据中还包括所述对象的类型。

可选地,所述对象的类型包括下列任意之一:整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组。

可选地,所述生成模块还适于:

在基于所述属性数据的相关信息生成所述对象对应的第二序列化数据时,为所述对象的属性数据建立索引;

将所述第二序列化数据中的所述对象的属性数据以建立的索引值表示。

可选地,所述解析模块还适于:

接收来自外部的第一序列化数据;或者

从本地存储器处获取第一序列化数据。

可选地,所述第二序列化数据为字符型数据。

可选地,所述解析模块还适于:

当所述第一序列化数据为json格式的序列化数据时,采用fastjson组件对所述第一序列化数据进行解析。

在本发明实施例中,在对第一序列化数据进行解析得到其对应的对象后,获取并分析该对象的属性数据,确定属性数据的相关信息;进而基于属性数据的相关信息生成该对象对应的第二序列化数据,并存储。由于第二序列化数据是基于属性数据的相关信息生成的,在后续要调用该对象时,可以直接获取存储的第二序列化数据,利用属性数据的相关信息对第二序列化数据进行快速、准确地解析,从而解决了对第一序列化数据进行解析时可能存在解析效率不高、耗时较长,而第一序列化数据对应的对象被应用使用频繁,导致应用的整体性能不高的问题。并且,本发明实施例生成的第二序列化数据没有丢失对象的属性数据,其仍然可以实现在第二序列化数据和第一序列化数据之间进行格式转换,以满足不同的存储需求。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一实施例的数据处理方法的流程图;

图2示出了根据本发明一实施例的第二序列化数据格式的一种示意图;

图3示出了根据本发明一实施例的第二序列化数据格式的另一种示意图;

图4所示为根据本发明一实施例的两种存储格式转化的关系示意图;

图5A示出了根据本发明另一实施例的数据处理方法的流程图;

图5B示出了采用图5A所示的方法生成的第二序列化数据的示意图;

图6示出了根据本发明一实施例的数据处理装置的结构示意图;以及

图7示出了根据本发明另一实施例的数据处理装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为解决上述技术问题,本发明实施例提供了一种数据处理方法。图1示出了根据本发明一实施例的数据处理方法的流程图。如图1所示,该方法至少包括以下步骤S102至步骤S108。

步骤S102,获取第一序列化数据,对第一序列化数据进行解析,得到第一序列化数据对应的对象。

步骤S104,获取并分析对象的属性数据,确定属性数据的相关信息。

步骤S106,基于属性数据的相关信息生成对象对应的第二序列化数据。

步骤S108,存储对象对应的第二序列化数据。

在本发明实施例中,在对第一序列化数据进行解析得到其对应的对象后,获取并分析该对象的属性数据,确定属性数据的相关信息;进而基于属性数据的相关信息生成该对象对应的第二序列化数据,并存储。由于第二序列化数据是基于属性数据的相关信息生成的,在后续要调用该对象时,可以直接获取存储的第二序列化数据,利用属性数据的相关信息对第二序列化数据进行快速、准确地解析,从而解决了对第一序列化数据进行解析时可能存在解析效率不高、耗时较长,而第一序列化数据对应的对象被应用使用频繁,导致应用的整体性能不高的问题。并且,本发明实施例生成的第二序列化数据没有丢失对象的属性数据,其仍然可以实现在第二序列化数据和第一序列化数据之间进行格式转换,以满足不同的存储需求。

在计算机语言中,对象是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。如前文介绍,对象在存储或传输时,需要首先对其进行序列化,在序列化期间,将对象的属性数据以序列化数据写入到临时或持久性存储区。以后,可以通过从存储区中读取、解析或反序列化该序列化数据,重新创建该对象。

上文步骤S102中获取的第一序列化数据可以是来自外部传输的,也可以是来自本地存储器存储的。例如,当终端(如个人电脑、智能手机等)上的任意应用客户端获取第一序列化数据时,该第一序列化数据可以是来自外部(如服务器端、其他终端等)传输的,也可以是来自终端本地存储器存储的。又例如,当服务器获取第一序列化数据时,该第一序列化数据可以是来自外部(如终端、其他服务器端等)传输的,也可以是来自服务器本地存储器存储的。进一步地,第一序列化数据可以是采用目前常见的序列化协议(如XML、JSON等)进行序列化得到的。

在本发明的可选实施例中,若第一序列化数据为json格式的序列化数据,即,采用序列化协议JSON对相应的对象进行序列化而得到。例如,某个对象,采用JSON对其进行序列化后,得到第一序列化数据为{"name":"value"}。又例如,某公司的组织数据中包括职员的基本信息(如姓名、地址等),则可以将职员作为总对象,将职员的基本信息作为各个子对象,对各个子对象进行序列化得到的序列化数据为{"userid":1,"name":"messi","address":[{"city":"北京","postcode":"10000","street":"wangjingdonglu"}]},该例子中存在多个子对象,各个子对象包含各自的属性数据,如属性名称和属性值。

fastjson组件是一个由Java语言编写的高性能功能完善的JSON库,其采用独创的算法,将语法分析的速度提升到极致。因而,可以采用fastjson组件对对象进行序列化来得到json格式的第一序列化数据,进而采用fastjson组件对第一序列化数据进行解析,得到第一序列化数据对应的对象。这里,在序列化时可以利用fastjson的反射机制,自动填充字段和构造对象,极大减少应用层代码量。

在本发明的可选实施例中,若第一序列化数据为xml格式的序列化数据,即,采用序列化协议XML对相应的对象进行序列化而得到。仍然以上述例子为例,对职员对象进行序列化得到的序列化数据如下:

<?xml version="1.0"encoding="utf-8"?>

<clerk>

<userid>1</userid>

<name>messi</name>

<address>

<city>北京</city>

<postcode>10000</postcode>

<street>wangjingdonglu</street>

</address>

</clerk>

以上介绍了两种格式(即json和xml格式)的第一序列化数据,在实际应用中还可以是采用其他序列化协议(如Protobuf或Thrift等)得到的相应格式的第一序列化数据,在此不再一一赘述。

在步骤S102得到第一序列化数据对应的对象之后,步骤S104获取并分析对象的属性数据来确定属性数据的相关信息,这里的属性数据可以包括属性名称和属性值。以上述列举为例,职员中各个子对象的属性数据中的属性名称可以是userid、name、address、city、postcode以及street,其对应的属性值分别为1、messi、北京、10000以及wangjingdonglu。进一步地,属性数据的相关信息可以包括属性数据的类型、长度等,例如属性数据的相关信息可以是属性名称的长度和属性值的长度。

在上文步骤S106中基于属性数据的相关信息生成对象对应的第二序列化数据,本发明实施例提供了一种可选的方案,即,基于对象的属性的长度和属性值的长度,生成对象对应的第二序列化数据,其中,第二序列化数据中包括对象的属性的长度和属性值的长度。这样,后续在接收到调用该对象的请求时,可以获取该对象的第二序列化数据,并基于对象的属性的长度和属性值的长度对第二序列化数据进行快速、准确地解析,得到该对象,而无需像解析第一序列化数据(如json格式的第一序列化数据)那样一个一个字符往后解析,可以提高解析效率,提高调用方的性能,进而提高用户体验。

在本发明的可选实施例中,第二序列化数据中还可以包括对象开始的标识和对象结束的标识,以进一步提高解析的效率和准确性。

在本发明的可选实施例中,第二序列化数据中还可以包括对象的类型,以提高解析的准确性。这里,对象的类型可以包括整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组,等等,本发明不限于此。以上述列举为例,职员对象的类型可以是字符型或数组。

在本发明的可选实施例中,在步骤S106中基于属性数据的相关信息生成对象对应的第二序列化数据时,还可以为对象的属性数据建立索引,进而将第二序列化数据中的对象的属性数据以建立的索引值表示,从而可以节省存储空间,并且读写量也随之减少,解析速度得到进一步提高。

在本发明的可选实施例中,生成的第二序列化数据可以为字符型数据,即采用字符型char[]存储数据,而不是字节型byte[]存储数据,省去了字符串编解码时间,性能得到进一步提高。

如前文提及,由于第二序列化数据是基于属性数据的相关信息生成的,在后续要调用该对象时,可以直接获取存储的第二序列化数据,利用属性数据的相关信息对第二序列化数据进行快速、准确地解析,从而解决了对第一序列化数据进行解析时可能存在解析效率不高、耗时较长,而第一序列化数据对应的对象被应用使用频繁,导致应用的整体性能不高的问题。因此,在上文步骤S108存储对象对应的第二序列化数据之后,本发明可以对调用对象的请求进行处理,下面分别针对本地或外部的调用对象的请求进行介绍。

情况一,针对本地的调用对象的请求。即,当接收到本地调用对象的请求时,获取存储的对象对应的第二序列化数据,进而利用属性数据的相关信息解析第二序列化数据,得到该对象,并提供给调用方。这里的属性数据可以包括属性名称和属性值,属性数据的相关信息可以是属性名称的长度和属性值的长度,且存储的对象对应的第二序列化数据中包括对象的属性的长度和属性值的长度。进一步地,第二序列化数据中还可以包括对象开始的标识、对象结束的标识以及对象的类型(可以如整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组等等)。

如图2所示为第二序列化数据的格式的一种示意图,不妨称该第二序列化数据的格式为proto格式,其中,1表示对象开始的标识,2表示对象结束的标识,3表示对象的类型,4表示对象的属性名称的长度,5表示对象的属性值的长度,“key”表示属性名称,“value”表示属性值,这里提及的对象也可以是一个总对象下的各个子对象。需要说明的是,图2所示的格式中的各个字段的顺序仅是列举,并不对本发明进行限制,在实际应用中可以按照任意字段顺序布局格式。

在本发明的可选实施例中,为了节省存储空间,还可以为对象的属性数据建立索引,进而将第二序列化数据中的对象的属性数据以建立的索引值表示。在实际应用中,经过分析,key/value键值对中可能存在大量重复的字符串,尤其是数组,如果只存储一次,将节省大量存储空间。并且,由于存储空间的减少,读写量也随之减少,解析速度得到进一步提高。

如图3所示为第二序列化数据的格式的另一种示意图,在图3中,1表示对象开始的标识,2表示对象结束的标识,3表示对象的类型,4表示对象的属性名称的长度,5表示对象的属性值的长度,6表示属性名称,7表示属性值。即,可以采用索引6和7来分别表示属性数据中的“key”和“value”,从而可以节省大量的存储空间。需要说明的是,这里提及的对象也可以是一个总对象下的各个子对象,并且图3所示的格式中的各个字段的顺序仅是列举,并不对本发明进行限制,在实际应用中可以按照任意字段顺序布局格式。

情况二,针对外部的调用对象的请求。即,当接收到外部调用对象的请求时,获取存储的对象对应的第二序列化数据,进而将获取的对象对应的第二序列化数据提供给调用方,由调用方利用属性数据的相关信息解析第二序列化数据,得到该对象。这里的属性数据可以包括属性名称和属性值,属性数据的相关信息可以是属性名称的长度和属性值的长度,且存储的对象对应的第二序列化数据中包括对象的属性的长度和属性值的长度。进一步地,第二序列化数据中还可以包括对象开始的标识、对象结束的标识以及对象的类型(可以如整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组等等)。

在本发明的可选实施例中,还可以实现在第一序列化数据和第二序列化数据之间进行格式转换,以满足不同的存储需求。如图4所示为两种存储格式(json格式的第一序列化数据和proto格式的第二序列化数据)转化的关系示意图,在图4中,在左边分支中,对jave对象反射,进行对象分析、语法分析以及json词法分析,得到json格式的序列化数据,以后可以通过从存储区中反序列化该json格式的序列化数据,重新创建该jave对象;在右边分支中,对jave对象反射,进行对象分析、语法分析以及proto词法分析,得到proto格式的序列化数据,以后可以通过从存储区中反序列化该proto格式的序列化数据,重新创建该jave对象。由图4所示,proto组件在词法层采用了可分离的设计,既能支持json格式,也能支持proto格式,并且还可以扩充其它格式。由于语法格式相通,支持json和proto在词法层面快速互转。

以上列举了图1所示实施例的各个环节的多种实施方式,下面通过一具体实施例来详细介绍本发明的数据处理方法的实现过程。在该实施例中,智能手机端中的即时通讯应用(如蓝信等),其中有许多从服务器端获取的数据都是直接以json格式(即,服务器端将对象序列化为json格式的序列化数据后,传输给智能手机的即时通讯应用)存储在本地,比如多组织列表、组织配置信息等,为的是编程方便。但有些json文件比较大,解析时间较长,使用又很频繁,导致应用的整体性能不高。采用本发明实施例提供的proto格式(如图2或图3)存储后,应用的性能得到很大的提高。

图5A示出了根据本发明另一实施例的数据处理方法的流程图。如图5A所示,该方法至少包括以下步骤S502至步骤S514。

步骤S502,获取json格式的第一序列化数据。

在该步骤中,第一序列化数据可以是来自外部服务器端传输的,也可以是来自本地存储器存储的(即,接收来自外部服务器端传输的json格式的序列化数据,并存储至本地)。

例如,某公司采用蓝信来实现企业移动工作和内外部交流协同,蓝信与服务器端进行交互,可以从服务器端获取json格式的第一序列化数据,如组织数据等,其中包括职员的基本信息,如{"userid":1,"name":"messi","address":[{"city":"北京","postcode":"10000","street":"wangjingdonglu"}]}。

步骤S504,对第一序列化数据进行解析,得到第一序列化数据对应的对象。

在该步骤中,可以采用fastjson组件对第一序列化数据进行解析,得到第一序列化数据对应的对象。

步骤S506,获取并分析对象的属性数据,确定对象的属性名称的长度和属性值的长度。

在该步骤中,属性数据可以包括属性名称和属性值。以上述列举为例,职员对象的属性数据中的属性名称可以是userid、name、address、city、postcode以及street,其对应的属性值分别为1、messi、北京、10000以及wangjingdonglu。进一步地,属性数据的相关信息可以包括属性数据的类型、长度等,例如属性数据的相关信息可以是属性名称的长度和属性值的长度。

步骤S508,基于对象的属性名称的长度和属性值的长度,生成对象对应的proto格式的第二序列化数据,其中,第二序列化数据中包括对象的属性的长度和属性值的长度。

在该步骤中,第二序列化数据中还可以包括对象开始的标识和对象结束的标识,以进一步提高解析的效率和准确性。此外,第二序列化数据中还可以包括对象的类型,以提高解析的准确性。这里,对象的类型可以包括整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组,等等,本发明不限于此。具体地,以图2所示的proto格式为例,上述列举的json格式的第一序列化数据生成的proto格式的第二序列化数据如图5B所示。图5B中描述了总对象下的第一个子对象的proto格式(对象开始、对象类型、key长度、value长度、key、value、对象结束),后面的子对象的描述以此类推。这样,在解析第二序列化数据时,可以直接根据定长的proto格式进行数据解析,无需一个一个字符进行比较来提取属性和属性值,可以提高数据解析的效率。在本发明实施例中,图5B所示的proto格式的第二序列化数据可以保存成文件,文件内容如下:1361userid12/1345namemessi2/1342city北京2/1385postcode100002……。

在本发明的可选实施例中,在基于对象的属性名称的长度和属性值的长度生成对象对应的第二序列化数据时,还可以为对象的属性名称和属性值建立索引,进而将第二序列化数据中的对象的属性名称和属性值以建立的索引值表示,从而可以节省数据的存储空间,并且读写量也随之减少,解析速度得到进一步提高。例如,在图5B中,可以为总对象的各个子对象的属性名称和属性值建立索引,可以用索引值u表示userid,n表示name,m表示messi,c表示city,b表示北京,p表示postcode,y表示10000,采用相应的索引值来替换具体的属性名称和属性值,可以减少数据的存储空间。当然,此处列举仅是示意性的,并不对本发明进行限制。在实际应用中,可以结合相关技术(如字典等)进行索引,满足索引查询时的效率。

在本发明的可选实施例中,生成的第二序列化数据可以为字符型数据,即采用字符型char[]存储数据,而不是字节型byte[]存储数据,省去了字符串编解码时间,性能得到进一步提高。

步骤S510,存储对象对应的proto格式的第二序列化数据。

在该步骤中,利用proto序列化,从词法分析器层面直接转换为proto格式并存储在本地。

步骤S512,当接收到本地调用对象的请求时,获取存储的对象对应的proto格式的第二序列化数据。

步骤S514,利用属性数据的相关信息解析proto格式的第二序列化数据,得到该对象,并提供给调用方。

在该步骤中,属性数据的相关信息可以包括对象开始的标识、对象结束的标识、对象的属性名称的长度、对象的属性值的长度以及对象的类型。

在本发明的可选实施例中,若从本地存储器处获取json格式的第一序列化数据,为了与之前存储的json格式相兼容,从存储器读取出第一序列化数据后,需要识别格式。proto格式有格式头(如图2或图3所示),可以识别出是否为proto格式。

本发明实施例中,利用自定义的proto格式,其包含对象开始的标识、对象结束的标识、对象的属性名称的长度、对象的属性值的长度以及对象的类型,能够实现快速、准确地解析proto格式的第二序列化数据的目的,从而解决了对json格式的第一序列化数据进行解析时,需要一个一个字符往后解析,判断是不是“:”(冒号)或者“,”(逗号)等字符,进而来提取该对象的属性和属性值,这样的解析效率不高,耗时较长,会导致获取该对象的应用的界面出现卡顿的问题,影响用户体验。

基于上文各个实施例提供的数据处理方法,基于同一发明构思,本发明实施例还提供了一种数据处理装置。

图6示出了根据本发明一个实施例的数据处理装置的结构示意图。如图6所示,该装置至少可以包括解析模块610、确定模块620、生成模块630以及存储模块640。

现介绍本发明实施例的数据处理装置的各组成或器件的功能以及各部分间的连接关系:

解析模块610,适于获取第一序列化数据,对所述第一序列化数据进行解析,得到所述第一序列化数据对应的对象;

确定模块620,与解析模块610相耦合,适于获取并分析所述对象的属性数据,确定所述属性数据的相关信息;

生成模块630,与确定模块620相耦合,适于基于所述属性数据的相关信息生成所述对象对应的第二序列化数据;

存储模块640,与生成模块630相耦合,适于存储所述对象对应的第二序列化数据。

在本发明一实施例中,如图7所示,上文图6展示的装置还可以包括:

第一处理模块710,与存储模块640相耦合,适于在存储模块640存储所述对象对应的第二序列化数据之后,当接收到本地调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象,并提供给调用方。

在本发明一实施例中,如图7所示,上文图6展示的装置还可以包括:

第二处理模块720,与存储模块640相耦合,适于在存储模块640存储所述对象对应的第二序列化数据之后,当接收到外部调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

将获取的所述对象对应的第二序列化数据提供给调用方,由所述调用方利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象。

在本发明一实施例中,所述属性数据包括属性和属性值,所述属性数据的相关信息包括属性的长度和属性值的长度。

在本发明一实施例中,上述生成模块630还适于:

基于所述对象的属性的长度和属性值的长度,生成所述对象对应的第二序列化数据,其中,所述第二序列化数据中包括所述对象的属性的长度和属性值的长度。

在本发明一实施例中,所述第二序列化数据中还包括对象开始的标识和对象结束的标识。

在本发明一实施例中,所述第二序列化数据中还包括所述对象的类型。

在本发明一实施例中,所述对象的类型包括下列任意之一:整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组。

在本发明一实施例中,上述生成模块630还适于:

在基于所述属性数据的相关信息生成所述对象对应的第二序列化数据时,为所述对象的属性数据建立索引;

将所述第二序列化数据中的所述对象的属性数据以建立的索引值表示。

在本发明一实施例中,上述解析模块610还适于:

接收来自外部的第一序列化数据;或者

从本地存储器处获取第一序列化数据。

在本发明一实施例中,所述第二序列化数据为字符型数据。

在本发明一实施例中,上述解析模块610还适于:

当所述第一序列化数据为json格式的序列化数据时,采用fastjson组件对所述第一序列化数据进行解析。

根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:

在本发明实施例中,在对第一序列化数据进行解析得到其对应的对象后,获取并分析该对象的属性数据,确定属性数据的相关信息;进而基于属性数据的相关信息生成该对象对应的第二序列化数据,并存储。由于第二序列化数据是基于属性数据的相关信息生成的,在后续要调用该对象时,可以直接获取存储的第二序列化数据,利用属性数据的相关信息对第二序列化数据进行快速、准确地解析,从而解决了对第一序列化数据进行解析时可能存在解析效率不高、耗时较长,而第一序列化数据对应的对象被应用使用频繁,导致应用的整体性能不高的问题。并且,本发明实施例生成的第二序列化数据没有丢失对象的属性数据,其仍然可以实现在第二序列化数据和第一序列化数据之间进行格式转换,以满足不同的存储需求。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的数据处理装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

本发明实施例的一方面,提供了A1、一种数据处理方法,包括:

获取第一序列化数据,对所述第一序列化数据进行解析,得到所述第一序列化数据对应的对象;

获取并分析所述对象的属性数据,确定所述属性数据的相关信息;

基于所述属性数据的相关信息生成所述对象对应的第二序列化数据;

存储所述对象对应的第二序列化数据。

A2、根据A1所述的方法,其中,在存储所述对象对应的第二序列化数据之后,所述方法还包括:

当接收到本地调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象,并提供给调用方。

A3、根据A1所述的方法,其中,在存储所述对象对应的第二序列化数据之后,所述方法还包括:

当接收到外部调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

将获取的所述对象对应的第二序列化数据提供给调用方,由所述调用方利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象。

A4、根据A1-A3中任一项所述的方法,其中,所述属性数据包括属性和属性值,所述属性数据的相关信息包括属性的长度和属性值的长度。

A5、根据A4所述的方法,其中,基于所述属性数据的相关信息生成所述对象对应的第二序列化数据,包括:

基于所述对象的属性的长度和属性值的长度,生成所述对象对应的第二序列化数据,其中,所述第二序列化数据中包括所述对象的属性的长度和属性值的长度。

A6、根据A5所述的方法,其中,所述第二序列化数据中还包括对象开始的标识和对象结束的标识。

A7、根据A5或A6所述的方法,其中,所述第二序列化数据中还包括所述对象的类型。

A8、根据A7所述的方法,其中,所述对象的类型包括下列任意之一:整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组。

A9、根据A1-A8中任一项所述的方法,其中,在基于所述属性数据的相关信息生成所述对象对应的第二序列化数据时,所述方法还包括:

为所述对象的属性数据建立索引;

将所述第二序列化数据中的所述对象的属性数据以建立的索引值表示。

A10、根据A1-A9中任一项所述的方法,其中,所述获取第一序列化数据,包括:

接收来自外部的第一序列化数据;或者

从本地存储器处获取第一序列化数据。

A11、根据A1-A10中任一项所述的方法,其中,所述第二序列化数据为字符型数据。

A12、根据A1-A11中任一项所述的方法,其中,当所述第一序列化数据为json格式的序列化数据时,对所述第一序列化数据进行解析,包括:

采用fastjson组件对所述第一序列化数据进行解析。

本发明实施例的另一方面,还提供了B13、一种数据处理装置,包括:

解析模块,适于获取第一序列化数据,对所述第一序列化数据进行解析,得到所述第一序列化数据对应的对象;

确定模块,适于获取并分析所述对象的属性数据,确定所述属性数据的相关信息;

生成模块,适于基于所述属性数据的相关信息生成所述对象对应的第二序列化数据;

存储模块,适于存储所述对象对应的第二序列化数据。

B14、根据B13所述的装置,其中,还包括:

第一处理模块,适于在所述存储模块存储所述对象对应的第二序列化数据之后,当接收到本地调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象,并提供给调用方。

B15、根据B13所述的装置,其中,还包括:

第二处理模块,适于在所述存储模块存储所述对象对应的第二序列化数据之后,当接收到外部调用所述对象的请求时,获取存储的所述对象对应的第二序列化数据;

将获取的所述对象对应的第二序列化数据提供给调用方,由所述调用方利用所述属性数据的相关信息解析所述第二序列化数据,得到所述对象。

B16、根据B13-B15中任一项所述的装置,其中,所述属性数据包括属性和属性值,所述属性数据的相关信息包括属性的长度和属性值的长度。

B17、根据B16所述的装置,其中,所述生成模块还适于:

基于所述对象的属性的长度和属性值的长度,生成所述对象对应的第二序列化数据,其中,所述第二序列化数据中包括所述对象的属性的长度和属性值的长度。

B18、根据B17所述的装置,其中,所述第二序列化数据中还包括对象开始的标识和对象结束的标识。

B19、根据B17或B18所述的装置,其中,所述第二序列化数据中还包括所述对象的类型。

B20、根据B19所述的装置,其中,所述对象的类型包括下列任意之一:整型、字节型、短整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型、日期、集合、数组。

B21、根据B13-20中任一项所述的装置,其中,所述生成模块还适于:

在基于所述属性数据的相关信息生成所述对象对应的第二序列化数据时,为所述对象的属性数据建立索引;

将所述第二序列化数据中的所述对象的属性数据以建立的索引值表示。

B22、根据B13-B21中任一项所述的装置,其中,所述解析模块还适于:

接收来自外部的第一序列化数据;或者

从本地存储器处获取第一序列化数据。

B23、根据B13-B22中任一项所述的装置,其中,所述第二序列化数据为字符型数据。

B24、根据B13-B23中任一项所述的装置,其中,所述解析模块还适于:

当所述第一序列化数据为json格式的序列化数据时,采用fastjson组件对所述第一序列化数据进行解析。

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