数据校验的方法、装置及系统与流程

文档序号:12917401阅读:508来源:国知局
数据校验的方法、装置及系统与流程

本公开总体涉及数据技术领域,具体而言,涉及一种数据校验的方法、装置及系统。



背景技术:

目前,应用中大量的服务端接口通过json格式来传递数据,其中json(javascriptobjectnotation,javascript对象标识)是一种轻量级的数据交换格式,由于其具有数据体量小、网络传输快、方便转换等特点,是目前互联网应用数据传输的主要数据传输格式。

但是,通常由于上游远程服务端接口的限制或者某些代码中的缺陷,服务端传递的json数据可能存在格式不规范的问题,从而导致下游客户端上的应用程序(app)(如目前基于android/ios手机操作系统的应用程序)在处理这些不规范的json数据时很容易出现应用崩溃。例如:远程服务端接口约定某个json字段的数据类型是string类型,但是实际服务端下发的数据是int类型,那么应用中把int类型的数据当作string类型的数据来处理就会出现异常,并导致应用崩溃。

因此,需要一种新的数据校验的方法、装置及系统。

在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开提供一种数据校验的理方法、装置及系统,以解决现有技术中因数据异常导致应用崩溃的技术问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的一方面,提供一种数据校验的方法,包括:

从至少一远程服务端接收json数据,得到至少一json数据;

对每一所述json数据从标准服务器调用相应的标准文件进行校验,得到校验结果;

对所述校验结果进行判断,如果校验结果为成功,则将所述json数据传递给客户端应用;如果校验结果为失败,则通知所述客户端应用校验结果为失败。

根据本公开的一实施方式,对每一所述json数据从标准服务器调用相应的标准文件进行校验之前,还包括:

对所述json数据进行初步校验,如果所述初步校验成功则继续对每一所述json数据从标准服务器调用相应的标准文件进行校验。

根据本公开的另一实施方式,所述初步校验包括:

判断所述json数据的对象是否为空;以及

判断所述json数据中是否包含有非法字符;

当所述json数据的对象不为空且所述json数据中不包含有非法字符时,所述初步校验成功。

根据本公开的另一实施方式,所述方法还包括:

生成所述标准文件之后,将所述标准文件从所述标准服务器缓存到所述客户端。

根据本公开的另一实施方式,所述方法还包括:

当任一所述远程服务端的json数据格式发生变化时,在所述标准服务器对相应的标准文件进行更新。

根据本公开的另一方面,还提供一种数据校验的装置,包括:

接收模块,用于从至少一远程服务端接收json数据,得到至少一json数据;

第一校验模块,用于对每一所述json数据从标准服务器调用相应的标准文件进行校验,得到校验结果;

标准文件生成模块,用于所述标准服务器预先根据客户端以及所述客户端从所述至少一远程服务端其中之一接收的json数据双方的接口约定文档生成所述标准文件;以及

执行模块,用于对所述校验结果进行判断,如果校验结果为成功,则将所述json数据传递给客户端应用;如果校验结果为失败,则通知所述客户端应用校验结果为失败。

根据本公开的一实施方式,所述装置还包括:

第二校验模块,用于对每一所述json数据从标准服务器调用相应的标准文件进行校验之前,对所述json数据进行初步校验,如果所述初步校验成功则继续执行所述第一校验模块,对每一所述json数据从标准服务器调用相应的标准文件进行校验。

根据本公开的另一实施方式,所述第二校验模块包括:

第一判断子模块,用于判断所述json数据的对象是否为空;以及

第二判断子模块,用于判断所述json数据中是否包含有非法字符;

当所述第一判断子模块判断所述json数据的对象不为空,且所述第二判断子模块判断所述json数据中不包含有非法字符时,所述初步校验成功。

根据本公开的另一实施方式,所述装置还包括:

缓存模块,用于在所述标准服务器生成所述标准文件之后,将所述标准文件从所述标准服务器缓存到所述客户端。

根据本公开的另一实施方式,所述装置还包括:

更新模块,用于当任一所述远程服务端的json数据格式发生变化时,在所述标准服务器对相应的标准文件进行更新。

根据本公开的另一方面,还提供一种数据校验的系统,包括:

处理器;以及

存储器,用于存储所述处理器可执行命令;

其中所述处理器用于:

从至少一远程服务端接收json数据,得到至少一json数据;

对每一所述json数据从标准服务器调用相应的标准文件进行校验,得到校验结果,其中所述标准文件为所述标准服务器预先根据客户端以及所述客户端从所述至少一远程服务端其中之一接收的json数据双方的接口约定文档生成;

对所述校验结果进行判断,如果校验结果为成功,则将所述json数据传递给客户端应用;如果校验结果为失败,则通知所述客户端应用校验结果为失败。

根据本公开的技术方案,能够得到以下技术效果:

利用现有公开技术搭建了一套统一json数据校验方法,根据从远端服务器接收到的json数据与标准服务器中调用的标准文件比较来进行验证,可以避免客户端应用由于json数据不规范造成的异常或崩溃。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。

图1示意性示出本公开一实施例中提供的一种数据校验的方法的步骤流程图。

图2示意性示出本公开远端服务器、客户端应用以及标准服务器之间的框架关系示意图。

图3示意性示出本公开另一实施例中提供的一种数据校验的方法的步骤流程图。

图4示意性示出本公开提供的校验方法中步骤s40的步骤流程图。

图5示意性示出本公开一实施例中提供的一种数据校验的装置的示意图。

图6示意性示出本公开另一实施例中提供的一种数据校验的装置的示意图。

图7示意性示出根据本公开一实施例中提供的一种数据校验的系统的示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。

附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1示出本公开一实施例中提供的一种数据校验的方法的步骤流程图,通过对客户端应用所接收的json数据进行校验,避免在数据处理过程中因数据类型不同出现应用崩溃的现象。

如图1所示,在步骤s10中,从至少一远程服务端接收json数据,得到至少一json数据。在本实施例中,至少一远程服务端包括a、b、c,且远程服务端a、远程服务端b以及远程服务端c这三个不同的远程服务端分别向客户端应用发送格式不同的json数据。

如图1所示,在步骤s20中,对每一json数据从标准服务器调用相应的标准文件进行校验,得到校验结果。本实施例中的标准文件jsonschema是用来描述json数据格式的标准,具体的规范可以参见http://json-schema.org/latest/json-schema-core.html。标准文件jsonschema是标准服务器预先根据客户端以及客户端从至少一远程服务端其中之一接收的json数据双方的接口约定文档生成,而且标准文件的生成可以利用第三方开源库https://github.com/fasterxml/jackson-module-jsonschema。

如图1所示,在步骤s30中,对校验结果进行判断,如果校验结果为成功,则将json数据传递给客户端应用;如果校验结果为失败,则通知客户端应用校验结果为失败。

本实施例提供的方法中所涉及的远端服务器a(用001表示)、远端服务器b(用002表示)、远端服务器c(用0031表示)、客户端应用004、以及标准服务器005的框架关系示意图如图2所示,三个远端服务器分别向客户端应用提供不同数据类型的json数据,客户端应用004接收后,其中的json校验模块0041根据从远端服务器接收到的json数据与标准服务器005中相应的远端服务器所提供的数据

如图3所示的步骤流程图所示,在本公开的一实施方式,在步骤s20对每一json数据从标准服务器调用相应的标准文件进行校验之前,还包括:

步骤s40:对json数据进行初步校验,如果初步校验成功则继续步骤s20,即对每一json数据从标准服务器调用相应的标准文件进行校验。

如图4所示,其中步骤s40中的初步校验包括以下步骤:

步骤s41:判断json数据的对象是否为空,这样可以避免空指针异常。

步骤s42:判断json数据中是否包含有非法字符,json数据的对象不为空且json数据中不包含有非法字符时,初步校验成功,可以进行下一步的验证,也就是步骤s40的初步校验成功后继续步骤s20基于标准文件的验证。除了判断是否为空之外,还需要判断json数据中含有非utf8的字符,由于根据标准文件jsonschema校验过程中只能支持utf8的字符,因此非utf8的字符就是非法字符。这样在初步校验酒可以过滤掉不合法的json数据,避免在后续更复杂的校验中出现异常崩溃的风险。

初步校验成功后,进行下一步的基于标准文件的校验,也就是根据调用的远程服务端(a/b/c)的不同,从jsonschema标准服务器下载对应的jsonschema标准文件。客户端应用对远程服务端返回的json数据(通常是以数据包的形式)和对应的jsonschema文件进行校验,校验流程就是把json数据和jsonschema标准文件进行比较,例如某个字段在schema中约定为数据类型为string,但是如果真实json数据中数据类型是int,那么数据类型不相符就会导致校验失败。校验的工具包可以选择json-schema-validator(android)/kitejsonvalidator(ios),针对android和ios不同的系统提供不同的校验工具包。如果这一步骤的校验失败,则通知客户端应用json数据校验失败,如果校验成功则把json数据传给应用进行业务处理。

还如图3所示,本公开提供的方法中还包括:

步骤s50:生成标准文件之后,将标准文件从标准服务器缓存到客户端,通过采用本地缓存机制,可以提高性能。

步骤s60:当任一远程服务端的json数据格式发生变化时,在标准服务器对相应的标准文件进行更新。通过这一步骤,如果调用远程服务的json数据格式发生变化,需要同步更新jsonschema标准服务器上标准文件的内容,以保证校验的一致性。

综上所述,本实施例提供的校验方法,利用现有公开技术搭建了一套统一json数据校验方法,根据从远端服务器接收到的json数据与标准服务器中调用的标准文件比较来进行验证,可以避免客户端应用由于json数据不规范造成的异常或崩溃。

基于上述提供的方法,图5还示出本公开另一实施例中提供的一种数据校验的装置的示意图,该装置100包括:接收模块110、第一校验模块120、标准文件生成模块130以及执行模块140。

接收模块110用于从至少一远程服务端接收json数据,得到至少一json数据。在本实施例中,至少一远程服务端包括a、b、c,且远程服务端a、远程服务端b以及远程服务端c这三个不同的远程服务端分别向客户端应用发送格式不同的json数据。

第一校验模块120用于对每一json数据从标准服务器调用相应的标准文件进行校验,得到校验结果,校验结果为校验成功或校验失败。本实施例中的标准文件jsonschema是用来描述json数据格式的标准,具体的规范可以参见http://json-schema.org/latest/json-schema-core.html。

标准文件生成模块130用于标准服务器预先根据客户端以及客户端从至少一远程服务端其中之一接收的json数据双方的接口约定文档生成标准文件。标准文件jsonschema是标准服务器预先根据客户端以及客户端从至少一远程服务端其中之一接收的json数据双方的接口约定文档生成,而且标准文件的生成可以利用第三方开源库https://github.com/fasterxml/jackson-module-jsonschema。

执行模块140用于对校验结果进行判断,如果校验结果为成功,则将json数据传递给客户端应用;如果校验结果为失败,则通知客户端应用校验结果为失败。

如图6所示的示意图,在本公开的另一实施例中,该装置100中还包括:第二校验模块150,用于在第一校验模块120对每一json数据从标准服务器调用相应的标准文件进行校验之前,对json数据进行初步校验,如果初步校验成功则继续执行第一校验模块,对每一json数据从标准服务器调用相应的标准文件进行校验。

具体的,第二校验模块150包括:第一判断子模块151和第二判断子模块152,第一判断子模块151用于判断json数据的对象是否为空;第二判断子模块152用于判断json数据中是否包含有非法字符(例如,非utf8的字符)。当第一判断子模块判断json数据的对象不为空,且第二判断子模块判断json数据中不包含有非法字符时,初步校验成功。通过第一判断子模块151的判断可以避免空指针异常,通过第二判断子模块152判断json数据中含有非utf8的字符,由于根据标准文件jsonschema校验过程中只能支持utf8的字符,因此非utf8的字符就是非法字符。这样在初步校验酒可以过滤掉不合法的json数据,避免在后续更复杂的校验中出现异常崩溃的风险。

如图6所示的示意图,在本公开的另一实施例中,该装置100中还包括:缓存模块160和更新模块170,缓存模块160用于在标准服务器生成标准文件之后,将标准文件从标准服务器缓存到客户端。通过采用本地缓存机制,可以提高性能。

更新模块170用于当任一远程服务端的json数据格式发生变化时,在标准服务器对相应的标准文件进行更新。如果调用远程服务的json数据格式发生变化,需要同步更新jsonschema标准服务器上标准文件的内容,以保证校验的一致性。

通过本公开提供的数据校验装置,利用现有公开技术搭建了一套统一json数据校验方法,根据从远端服务器接收到的json数据与标准服务器中调用的标准文件比较来进行验证,可以避免客户端应用由于json数据不规范造成的异常或崩溃。

基于上述的方法和装置,图7还示出了本公开的实施例提供的一种数据校验的系统,该系统200中包括处理器210和存储器220。存储器220用于存储处理器210可执行命令,处理器210用于从至少一远程服务端接收json数据,得到至少一json数据;对每一json数据从标准服务器调用相应的标准文件进行校验,得到校验结果,其中标准文件为标准服务器预先根据客户端以及客户端从至少一远程服务端其中之一接收的json数据双方的接口约定文档生成;对校验结果进行判断,如果校验结果为成功,则将json数据传递给客户端应用;如果校验结果为失败,则通知客户端应用校验结果为失败。

应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施方式。

以上具体地示出和描述了本公开的示例性实施方式。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

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