一种数据解析的方法和装置转让专利

申请号 : CN201610305299.0

文献号 : CN107357792B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 尚学峰

申请人 : 北京京东尚科信息技术有限公司北京京东世纪贸易有限公司

摘要 :

本发明提供一种数据解析的方法和装置,能够保证数据提供方修改数据的XML结构时,数据获取方可以实现容错,提高数据获取方系统的可用性及可靠性,同时,还可减少数据获取方对数据提供方接口的强制依赖,并且使得数据获取方可主动掌握接口的变化情况,及时地修复上线系统,有效地提高系统的修复能力。本发明的数据解析的方法包括:从数据提供方获取数据;根据本地预存的数据对象对数据进行数据转换,数据对象与所述数据具有映射关系;如果数据转换成功,则将转换后的数据进行展示,否则数据转换失败,利用预存的数据转换模板执行数据转换,以得到所需格式的数据并进行展示,数据转换模板包括需转换的数据的属性名和数据转换规则。

权利要求 :

1.一种数据解析的方法,其特征在于,包括:从数据提供方获取数据;

根据本地预存的数据对象对所述数据进行数据转换,所述数据对象与所述数据具有映射关系;

如果所述数据转换成功,则将转换后的数据进行展示,否则所述数据转换失败,利用预存的数据转换模板执行所述数据转换,以得到所需格式的数据并进行展示,所述数据转换模板包括需转换的数据的属性名和数据转换规则。

2.根据权利要求1所述的方法,其特征在于,所述数据转换成功包括:所述数据的属性与本地预存的数据对象中的数据属性匹配成功。

3.根据权利要求1所述的方法,其特征在于,所述数据为XML格式的数据。

4.根据权利要求1所述的方法,其特征在于,所述数据转换失败之后,还包括:输出报警提示消息。

5.根据权利要求4所述的方法,其特征在于,输出报警提示消息之后,还包括:向所述数据提供方发送用于获取变更的数据属性的请求,并根据所述数据提供方返回的所述变更的数据属性,更新所述数据转换模板以及所述数据对象。

6.一种数据解析的装置,其特征在于,包括:数据获取模块,用于从数据提供方获取数据;

第一转换模块,用于根据本地预存的数据对象对所述数据进行数据转换,所述数据对象与所述数据具有映射关系;

第二转换模块,用于如果所述数据转换成功,则将转换后的数据进行展示,否则所述数据转换失败,利用预存的数据转换模板执行所述数据转换,以得到所需格式的数据并进行展示,所述数据转换模板包括需转换的数据的属性名和数据转换规则。

7.根据权利要求6所述的装置,其特征在于,所述数据转换成功包括:所述数据的属性与本地预存的数据对象中的数据属性匹配成功。

8.根据权利要求6所述的装置,其特征在于,所述数据为XML格式的数据。

9.根据权利要求6所述的装置,其特征在于,还包括消息输出模块,用于:在所述数据转换失败之后,输出报警提示消息。

10.根据权利要求9所述的装置,其特征在于,还包括模板更新模块,用于:向所述数据提供方发送用于获取变更的数据属性的请求,并根据所述数据提供方返回的所述变更的数据属性,更新所述数据转换模板以及所述数据对象。

11.一种数据解析的装置,其特征在于,包括:存储器和处理器,其中,

所述存储器存储指令;

所述处理器执行所述指令用于:

从数据提供方获取数据;

根据本地预存的数据对象对所述数据进行数据转换,所述数据对象与所述数据具有映射关系;

如果所述数据转换成功,则将转换后的数据进行展示,否则所述数据转换失败,利用预存的数据转换模板执行所述数据转换,以得到所需格式的数据并进行展示,所述数据转换模板包括需转换的数据的属性名和数据转换规则。

12.一种电子设备,其特征在于,包括:一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。

13.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。

说明书 :

一种数据解析的方法和装置

技术领域

[0001] 本发明涉及计算机及其软件技术领域,特别地涉及一种数据解析的方法和装置。

背景技术

[0002] 在web开发中,为了获得其他系统的数据,调用接口是最常见的一种方式,在很多情况下,数据获取方需要通过调用数据提供方的接口从数据提供方获取数据,并且数据都是以XML格式进行传递的,数据获取方把获得的XML格式的数据进行转换处理,最终有的数据显示在页面上,有的数据持久化到数据库中。
[0003] 其中,数据获取方在从数据提供方调用接口之前,首先与数据提供方协商接口的定义、协议、格式(其中格式多数为XML格式),数据提供方发布web接口,数据获取方通过接口地址,协议、其他标识等找到该接口并调用,数据获取方获得装载的XML格式的数据后,直接利用Java的反序列化的方式进行解析,再进行后续地处理,利用Java的反序列化的方法是实现XML格式的数据与数据对象的映射转换的一种常用方式。
[0004] 然后,在实际使用过程中,由于是数据获取方是通过调用其他系统的接口获取数据,所以对应系统的接口可能会由于某种原因导致传递的XML结构的数据发生变化(比如XML数据文件中增加一个节点),这样,如果数据提供方未能将XML数据结构的变化情况及时通知数据获取方,可导致数据获取方的系统调用该接口后,将XML格式的数据转换为数据对象时转换失败,严重者可能造成系统不可使用。
[0005] 针对上述问题,目前还没有行之有效的解决方案。

发明内容

[0006] 有鉴于此,本发明提供一种数据解析的方法和装置,能够保证数据提供方修改数据的XML结构时,数据获取方可以实现容错,提高数据获取方系统的可用性及可靠性,同时,还可减少数据获取方对数据提供方接口的强制依赖,并且使得数据获取方可主动掌握接口的变化情况,及时地修复上线系统,有效地提高系统的修复能力。
[0007] 为实现上述目的,根据本发明的一个方面,提供了一种数据解析的方法。
[0008] 一种数据解析的方法,包括:从数据提供方获取数据;根据本地预存的数据对象对所述数据进行数据转换,所述数据对象与所述数据具有映射关系;如果所述数据转换成功,则将转换后的数据进行展示,否则所述数据转换失败,利用预存的数据转换模板执行所述数据转换,以得到所需格式的数据并进行展示,所述数据转换模板包括需转换的数据的属性名和数据转换规则。
[0009] 可选地,所述数据转换成功包括:所述数据的属性与本地预存的数据对象中的数据属性匹配成功。
[0010] 可选地,所述数据为XML格式的数据。
[0011] 可选地,所述数据转换失败之后,还包括:输出报警提示消息。
[0012] 可选地,输出报警提示消息之后,还包括:向所述数据提供方发送用于获取变更的数据属性的请求,并根据所述数据提供方返回的所述变更的数据属性,更新所述数据转换模板以及所述数据对象。
[0013] 根据本发明的另一方面,提供了一种数据解析的装置。
[0014] 一种数据解析的装置,包括:数据获取模块,用于从数据提供方获取数据;第一转换模块,用于根据本地预存的数据对象对所述数据进行数据转换,所述数据对象与所述数据具有映射关系;第二转换模块,用于如果所述数据转换成功,则将转换后的数据进行展示,否则所述数据转换失败,利用预存的数据转换模板执行所述数据转换,以得到所需格式的数据并进行展示,所述数据转换模板包括需转换的数据的属性名和数据转换规则。
[0015] 可选地,所述数据转换成功包括:所述数据的属性与本地预存的数据对象中的数据属性匹配成功。
[0016] 可选地,所述数据为XML格式的数据。
[0017] 可选地,还包括消息输出模块,用于:在所述数据转换失败之后,输出报警提示消息。
[0018] 可选地,还包括模板更新模块,用于:向所述数据提供方发送用于获取变更的数据属性的请求,并根据所述数据提供方返回的所述变更的数据属性,更新所述数据转换模板以及所述数据对象。
[0019] 根据本发明的又一方面,提供了一种数据解析的装置。
[0020] 一种数据解析的装置,包括:存储器和处理器,其中,所述存储器存储指令;所述处理器执行所述指令用于:从数据提供方获取数据;根据本地预存的数据对象对所述数据进行数据转换,所述数据对象与所述数据具有映射关系;如果所述数据转换成功,则将转换后的数据进行展示,否则所述数据转换失败,利用预存的数据转换模板执行所述数据转换,以得到所需格式的数据并进行展示,所述数据转换模板包括需转换的数据的属性名和数据转换规则。
[0021] 根据本发明的又一方面,提供了一种电子设备。
[0022] 一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现数据解析的方法。
[0023] 根据本发明的又一方面,提供了一种计算机可读介质。
[0024] 一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现数据解析的方法。
[0025] 根据本发明的技术方案,从数据提供方获取数据,并根据本地预存的数据对象对数据进行数据转换,如果数据转换成功,则将转换后的数据进行展示,否则数据转换失败,利用预存的数据转换模板执行数据转换,同时输出报警提示消息,如果更新数据转换模板,则向数据提供方发送用于获取变更的数据属性的请求,并根据该变更的数据属性,更新数据转换模板以及数据对象。使用本发明的技术方案,能够保证数据提供方修改数据的XML结构时,数据获取方可以实现容错,提高数据获取方系统的可用性及可靠性,同时,还可减少数据获取方对数据提供方接口的强依赖,并且克服现有的在影响用户体验之后才紧急修复上线系统的“被动上线”方式的缺陷,变“被动上线”为“主动上线”,使得数据获取方可主动掌握接口的变化情况,及时地修复上线系统,有效地提高系统的修复能力。

附图说明

[0026] 附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0027] 图1是根据本发明实施例的包含数据获取方和数据提供方的系统构架示意图;
[0028] 图2是根据本发明实施例的数据解析的方法的主要步骤示意图;
[0029] 图3是根据本发明实施例的数据解析方法的优选流程示意图;
[0030] 图4是根据本发明实施例的数据解析的装置的主要模块示意图;
[0031] 图5是根据本发明另一实施例的数据解析的装置的主要模块示意图。

具体实施方式

[0032] 以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0033] 图1是根据本发明实施例的包含数据获取方和数据提供方的系统构架示意图。
[0034] 如图1所示,在包含数据获取方和数据提供方的系统10中,数据获取方11根据业务上的需要,要从数据提供方12获取数据,例如,网络平台的租车系统需要从供应商系统处获取运营车辆相关数据。数据提供方12将根据数据获取方的数据需求,随时向数据获取方11供应数据。
[0035] 通常情况下,数据获取方11通过调用数据提供方12的发布的接口(如web接口)来获取数据提供方12提供的数据。数据提供方12的接口提供模块122为数据提供方12与数据获取方11之间的数据传递提供接口服务。数据获取方11通过获取模块111调用数据提供方12发布的接口121,并通过接口121获取所需的数据,并且接口提供方12提供的数据通常为以XML格式存放的数据文件,数据获取方11在接收到该XML格式的数据文件之后,需要通过转换模块113利用配置好的转换模板112将数据文件转换成数据获取方11可以识别的数据对象,以便提供给展示模块114进行进一步的数据加工等操作,然后进行数据展示。
[0036] 其中,上述数据获取方11的转换模块113执行数据转换,主要是指通过转换模板112(例如XML数据转换模板)来执行的数据转换,而不同于现有技术中通常使用的直接利用Java反序列化的方式进行数据解析和转换。这种通过转换模板来转换数据的方式不但可以成功地实现数据的解析和转换,还能有效地克服直接利用Java反序列化的方式转换数据所带来的容错性能差的缺陷。基于本发明实施例的这种数据转换方式主要在于解决数据转换中的容错问题,因此,数据获取方11在从数据提供方12获取到数据之后,可以首先利用Java反序列化的方式对获取的数据进行解析并转换(采用这种方式执行数据转换的相关模块图中未示出),在数据转换失败的情况下,再启用转换模板112转换数据。
[0037] 图2是根据本发明实施例的数据解析的方法的主要步骤示意图。
[0038] 如图2所示本发明实施例的数据解析的方法主要包括步骤S21至步骤S23。
[0039] 步骤S21:从数据提供方获取数据。
[0040] 其中,该获取的数据为XML格式的数据。
[0041] 步骤S22:根据本地预存的数据对象对该数据进行数据转换,其中,数据对象与该数据具有映射关系。
[0042] 数据提供方在发布供数据获取方调用的接口的同时,还发布关于该接口的文档,文档中包含接口的地址、协议以及数据结构、接口的端口号等内容,数据获取方根据该接口文档中规定的内容,预先编辑数据对象,并将编辑的数据对象预存在本地,其中,预存在本地的数据对象为Java对象。
[0043] 数据获取方在从数据提供方获取到数据之后,首先利用本地预存的Java对象,通过Java反序列化的方式对获取的数据进行解析并转换,执行该解析和转换要求本地预存的Java对象与XML格式的数据具有映射关系,具体地,XML格式的数据的属性应与本地预存的Java对象的属性一一对应匹配,根据本地预存的Java对象与XML格式的数据间的映射关系,将XML格式的数据反序列化为数据获取方可以识别的数据对象。
[0044] 步骤S23:如果数据转换成功,则将转换后的数据进行展示,否则数据转换失败,利用预存的数据转换模板执行数据转换,以得到所需格式的数据并进行展示,数据转换模板包括需转换的数据的属性名和数据转换规则。
[0045] 其中,数据转换成功包括:数据的属性与本地预存的数据对象中的数据属性匹配成功。例如,本地Java对象包含A、B、C三个属性,数据获取方从数据提供方所获取的XML格式的数据也包含A、B、C三个属性,那么,将所获取的XML数据中的属性与本地预存的Java对象中的数据属性进行匹配,匹配成功,则可以成功地将XML格式的数据转换为数据获取方可识别的数据对象。否则,假设数据获取方从数据提供方所获取的XML格式的数据包含A、B、C、D四个属性,那么,按照上述方法进行属性匹配,则XML格式的数据中属性D没有匹配的本地Java对象,则数据转换失败。
[0046] 当上述数据转换失败时,利用预存的数据转换模板执行数据转换,以得到数据获取方可识别的数据对象。其中,数据转换模板包括需转换的数据的属性名和数据转换规则,以获取的XML格式的数据包含A、B、C、D四个属性,并且本地预存的Java对象包含A、B、C三个属性为例,那么数据转换模板预先可以配置为包含对应A、B、C三个属性的属性名,以及将该A、B、C三个属性所对应的XML格式的数据转换为数据获取方可识别的数据对象的数据转换规则。
[0047] 通过该数据转换模板执行数据转换时,根据数据转换模板中需转换的数据的属性名(例如A、B、C的属性名)查找到与该属性名相对应的XML格式的数据(例如对应A、B、C三个属性的数据),然后根据数据转换模板中的数据转换规则解析所查找到的XML格式的数据,完成数据转换。通过数据转换模板执行数据转换,使得数据提供方的数据的结构发生变化的情况下(例如将原包含A、B、C三个属性的XML结构的数据增加一个包含属性D的节点),也可以将XML格式的数据转换为数据获取方可识别的数据对象,从而增加了数据获取方系统的容错性能,避免因数据转换失败而导致系统不可用。
[0048] 数据转换失败之后,还可以输出报警提示消息。由于上述通过数转换模板执行数据转换时,未对数据提供方新增的数据属性执行数据转换,为了后续完善数据获取方系统的性能,本发明实施例的技术方案可通过在数据转换失败之后输出报警提示消息的方式提示开发人员更新升级数据转换模板和相应的设置,以便数据获取方后续从数据提供方获取包含新增属性的XML数据时,可以将新增属性的数据正常解析和转换。具体地,例如,当前预存的数据转换模板中配置了包含对应A、B、C三个属性的属性名,以及将该A、B、C三个属性所对应的XML格式的数据转换为数据获取方可识别的数据对象的数据转换规则,当数据提供方的数据新增加属性为D的数据,那么数据获取方系统通过输出报警提示消息,通知开发人员当前的数据转换模板需要修复。其中,开发人员为具备对该模板开发和维护的业务能力的专业人员。
[0049] 如果开发人员选择修复当前的数据转换模板,那么,数据获取方系统在输出报警提示消息之后,可以向数据提供方发送用于获取变更的数据属性的请求,并根据数据提供方返回的变更的数据属性,更新数据转换模板以及数据对象。具体地,数据获取方从数据提供方获取到新增数据属性D,然后在当前的数据转换模板中添加相应的配置,即:添加属性D的属性名,以及添加将属性D的数据转换为可识别的数据对象的数据转换规则,同时,在本地预存的Java对象中增加属性D的相关字段。然后,将当前的数据转换模板更新为修改配置之后的数据转换模板,并更新本地预存的Java对象。通过将带有更新的数据转换模板和本地Java对象的数据获取方系统上线,在后续获取数据提供方数据时,系统将不会报错。通过这种有效的报警机制,可以提前修复数据转换模板并升级数据获取方系统,从而在后续数据转换之前,预先避免了因数据转换失败而报错,进而避免导致系统不可用等更加严重的问题出现,克服现有解决方案中普遍存在的在影响用户体验时才去修复系统问题、比较被动的缺陷,因此,实现了变现有的系统“被动上线”为“主动上线”。
[0050] 需要说明的是,本发明实施例的技术方案主要以数据提供方的XML数据属性增加的情况为例进行说明。数据提供方的数据结构发生改变,通常情况下是对原有的数据结构增加节点(即新增数据属性),然而,对于数据提供方的数据属性减少的情况,也会引起数据获取方的系统在执行数据转换时报错,本领域技术人员可以理解地是,在数据提供方的数据属性减少的情况下,通过减少数据转换模版的相应配置和本地Java对象的属性,同样也可解决本发明提出的技术问题。
[0051] 为了更清楚地说明本发明实施例的数据解析方法的流程,图3示出了本发明实施例的数据解析方法的优选流程示意图。
[0052] 如图3所示,本发明实施例的数据解析方法的流程主要可以包括步骤S31至步骤S38。
[0053] 步骤S31:从数据提供方获取XML格式的数据。
[0054] 步骤S32:根据本地预存的Java对象将XML格式的数据转换成可识别的数据对象。
[0055] 步骤S33:判断是否转换成功,若是,则执行步骤S38,若否,则执行步骤S34。
[0056] 步骤S34:利用预存的数据转换模板将XML格式的数据转换成可识别的数据对象,同时输出报警提示消息。
[0057] 步骤S35:判断是否修复当前的数据转换模板,若是,则执行步骤S36,若否,则执行步骤S38。
[0058] 步骤S36:向数据提供方发送用于获取变更的数据属性的请求。
[0059] 步骤S37:根据数据提供方返回的变更的数据属性,更新数据转换模板以及数据对象。
[0060] 步骤S38:展示转换后的数据。
[0061] 图4是根据本发明实施例的数据解析的装置的主要模块示意图。
[0062] 如图4所示,本发明实施例的数据解析的装置40主要包括:数据获取模块41、第一转换模块42以及第二转换模块43。其中,数据获取模块41用于从数据提供方获取数据;第一转换模块42用于根据本地预存的数据对象对数据进行数据转换,数据对象与数据具有映射关系;第二转换模块用于如果数据转换成功,则将转换后的数据进行展示,否则数据转换失败,利用预存的数据转换模板执行数据转换,以得到所需格式的数据并进行展示,数据转换模板包括需转换的数据的属性名和数据转换规则。
[0063] 数据解析的装置40还可以包括消息输出模块,用于在数据转换失败之后,输出报警提示消息。
[0064] 并且,数据解析的装置40还可以包括模板更新模块,用于向数据提供方发送用于获取变更的数据属性的请求,并根据数据提供方返回的变更的数据属性,更新数据转换模板以及数据对象。
[0065] 根据本发明的另一实施例,如图5所示,数据解析的装置50主要包括:存储器51和处理器52,其中,存储器51存储指令;处理器52执行指令用于:从数据提供方获取数据;根据本地预存的数据对象对数据进行数据转换,数据对象与数据具有映射关系;如果数据转换成功,则将转换后的数据进行展示,否则数据转换失败,利用预存的数据转换模板执行数据转换,以得到所需格式的数据并进行展示,数据转换模板包括需转换的数据的属性名和数据转换规则。
[0066] 根据本发明实施例的技术方案,从数据提供方获取数据,并根据本地预存的数据对象对数据进行数据转换,如果数据转换成功,则将转换后的数据进行展示,否则数据转换失败,利用预存的数据转换模板执行数据转换,同时输出报警提示消息,如果更新数据转换模板,则向数据提供方发送用于获取变更的数据属性的请求,并根据该变更的数据属性,更新数据转换模板以及数据对象。使用本发明实施例的技术方案,能够保证数据提供方修改数据的XML结构时,数据获取方可以实现容错,提高数据获取方系统的可用性及可靠性,同时,还可减少数据获取方对数据提供方接口的强制依赖,并且克服现有的在影响用户体验之后才紧急修复上线系统的“被动上线”方式的缺陷,变“被动上线”为“主动上线”,使得数据获取方可主动掌握接口的变化情况,及时地修复上线系统,有效地提高系统的修复能力。
[0067] 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。