CN111897833A - 数据处理方法及装置 - Google Patents
数据处理方法及装置 Download PDFInfo
- Publication number
- CN111897833A CN111897833A CN202010805786.XA CN202010805786A CN111897833A CN 111897833 A CN111897833 A CN 111897833A CN 202010805786 A CN202010805786 A CN 202010805786A CN 111897833 A CN111897833 A CN 111897833A
- Authority
- CN
- China
- Prior art keywords
- value
- check
- key
- data
- type
- 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
Images
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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
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)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种数据处理方法及装置,该方法包括:获取第一键值对对应的第一校验规则,第一键值对为待校验数据中的任意一个键值对,第一键值对包括第一关键字和第一值。获取第一值的数据类型,数据类型为嵌套类型或非嵌套类型。根据第一校验规则和数据类型对第一值进行校验,得到校验结果。通过获取第一键值对对应的第一校验规则,以及获取第一值的数据类型,从而针对嵌套类型的第一值和非嵌套类型的第一值,均可以实现根据第一校验规则对第一值进行校验,避免了针对嵌套类型的第一值无法校验的情况,有效保证了数据校验的可靠性。
Description
技术领域
本申请实施例涉及计算机技术,尤其涉及一种数据处理方法及装置。
背景技术
用户可以通过客户端或者全球广域网(World Wide Web,WEB)提交数据,以使得客户端、WEB端、或者服务器对提交的数据进行校验。
在相关技术中,可以针对数据预先设置有校验规则,在客户端、WEB端、或者服务器中根据校验规则判断数据是否满足条件,例如,数据的大小是否在预设范围内,数据的长度是否满足预设长度等。
然而,当数据较为复杂时,例如当数据为列表、键值对等类型时,则无法根据校验规则对数据进行校验,从而导致数据校验的可靠性低。
发明内容
本申请实施例提供一种数据处理方法及装置,以克服数据校验的可靠性低的问题。
第一方面,本申请实施例提供一种数据处理方法,包括:
获取第一键值对对应的第一校验规则,所述第一键值对为待校验数据中的任意一个键值对,所述第一键值对包括第一关键字和第一值;
获取所述第一值的数据类型,所述数据类型为嵌套类型或非嵌套类型;
根据所述第一校验规则和所述数据类型对所述第一值进行校验,得到校验结果。
在一种可能的设计中,所述嵌套类型包括如下至少一种类型:列表、键值对;
所述非嵌套类型包括如下至少一种类型:数字、字符串。
在一种可能的设计中,所述根据所述第一校验规则和所述数据类型对所述第一值进行校验,得到校验结果,包括:
判断所述第一值是否为空;
若是,若所述第一校验规则允许值为空,则确定校验结果为校验成功,若所述第一校验规则中不允许值为空,则确定校验结果为校验失败;
若否,则判断所述第一值的数据类型是否为所述第一校验规则中的预设类型中的一种,若不是预设类型中的一种,则确定校验结果为校验失败,若是预设类型中的一种,则根据所述第一值的数据类型,确定所述校验结果。
在一种可能的设计中,所述第一值的数据类型为嵌套类型;根据所述第一值的数据类型,确定所述校验结果,包括:
若所述嵌套类型为列表,则所述第一值为第一列表,针对所述第一列表中的每一个元素,重复执行上述判断所述第一值是否为空的操作,得到所述第一列表中的各元素的校验结果;或者
若所述嵌套类型为键值对,则所述第一值为第二键值对,所述第二键值对包括第二关键字和第二值,根据所述第二关键字和所述待校验数据对应的检查表对所述第二值进行校验,得到校验结果。
在一种可能的设计中,所述根据所述第二关键字和所述待校验数据对应的检查表对所述第二值进行校验,得到校验结果,包括:
判断所述待校验数据对应的检查表中是否存在所述第二关键字对应的第二校验规则;
若是,则根据所述第二校验规则和所述第二值的数据类型对所述第二值进行校验,得到校验结果。
若否,则丢弃所述第一键值对或者忽略所述第一键值对。
在一种可能的设计中,所述第一值的数据类型为非嵌套类型;根据所述第一值的数据类型,确定所述校验结果,包括:
判断所述第一值的数据类型是否为字符串;
若是,则在所述第一值的长度不在预设长度范围内时,确定所述校验结果为校验失败。
若否,则获取检查函数,并通过所述检查函数对所述数据类型进行校验,得到所述校验结果。
第二方面,本申请实施例提供一种数据处理装置,包括:
获取模块,用于获取第一键值对对应的第一校验规则,所述第一键值对为待校验数据中的任意一个键值对,所述第一键值对包括第一关键字和第一值;
所述获取模块,还用于获取所述第一值的数据类型,所述数据类型为嵌套类型或非嵌套类型;
校验模块,用于根据所述第一校验规则和所述数据类型对所述第一值进行校验,得到校验结果。
在一种可能的设计中,所述嵌套类型包括如下至少一种类型:列表、键值对;
所述非嵌套类型包括如下至少一种类型:数字、字符串。
在一种可能的设计中,所述校验模块具体用于:
判断所述第一值是否为空;
若是,若所述第一校验规则允许值为空,则确定校验结果为校验成功,若所述第一校验规则中不允许值为空,则确定校验结果为校验失败;
若否,则判断所述第一值的数据类型是否为所述第一校验规则中的预设类型中的一种,若不是预设类型中的一种,则确定校验结果为校验失败,若是预设类型中的一种,则根据所述第一值的数据类型,确定所述校验结果。
在一种可能的设计中,所述第一值的数据类型为嵌套类型;
所述校验模块具体用于:
若所述嵌套类型为列表,则所述第一值为第一列表,针对所述第一列表中的每一个元素,重复执行上述判断所述第一值是否为空的操作,得到所述第一列表中的各元素的校验结果;或者
若所述嵌套类型为键值对,则所述第一值为第二键值对,所述第二键值对包括第二关键字和第二值,根据所述第二关键字和所述待校验数据对应的检查表对所述第二值进行校验,得到校验结果。
在一种可能的设计中,所述校验模块具体用于:
判断所述待校验数据对应的检查表中是否存在所述第二关键字对应的第二校验规则;
若是,则根据所述第二校验规则和所述第二值的数据类型对所述第二值进行校验,得到校验结果。
若否,则丢弃所述第一键值对或者忽略所述第一键值对。
在一种可能的设计中,所述第一值的数据类型为非嵌套类型;
所述校验模块具体用于:
判断所述第一值的数据类型是否为字符串;
若是,则在所述第一值的长度不在预设长度范围内时,确定所述校验结果为校验失败。
若否,则获取检查函数,并通过所述检查函数对所述数据类型进行校验,得到所述校验结果。
第三方面,本申请实施例提供一种数据处理设备,包括:
存储器,用于存储程序;
处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如上第一方面以及第一方面各种可能的设计中任一所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如上第一方面以及第一方面各种可能的设计中任一所述的方法。
本申请实施例提供一种数据处理方法及装置,该方法包括:获取第一键值对对应的第一校验规则,第一键值对为待校验数据中的任意一个键值对,第一键值对包括第一关键字和第一值。获取第一值的数据类型,数据类型为嵌套类型或非嵌套类型。根据第一校验规则和数据类型对第一值进行校验,得到校验结果。通过获取第一键值对对应的第一校验规则,以及获取第一值的数据类型,从而针对嵌套类型的第一值和非嵌套类型的第一值,均可以实现根据第一校验规则对第一值进行校验,避免了针对嵌套类型的第一值无法校验的情况,有效保证了数据校验的可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的数据处理方法的系统示意图;
图2为本申请提供的客户端接收用户提交的数据的示意图;
图3为本申请实施例提供的WEB端接收用户提交的数据的示意图;
图4为本申请其中一实施例提供的数据处理方法的流程图;
图5为本申请实施例提供的对第一值进行校验的实现示意图;
图6为本申请实施例提供的第一值为列表的实现示意图;
图7为本申请实施例提供的第一值为键值对的单层嵌套示意图;
图8为本申请实施例提供的第一值为键值对的多层嵌套示意图;
图9为本申请实施例提供的数据处理装置的结构示意图;
图10为本申请实施例提供的数据处理设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面结合图1对本申请所涉及的应用场景进行说明,图1为本申请实施例提供的数据处理方法的系统示意图。
如图1所示,该系统包括:客户端101、WEB端102、服务器103以及数据库104。
其中,客户端101和WEB端102可以接收用户提交的数据,其中,WEB端102例如可以接收用户通过网页提交的数据,客户端例如可以接收用户通过应用程序(Application,APP)、固件等非网页形式提交的数据。
在本实施例中,客户端101或者WEB端102可以对用户提交的数据先进行校验,若客户端101或者WEB端102的校验不通过,则可以向用户发送当前数据非法的提示信息,若客户端101或者WEB端102的校验通过,则再将向服务器103发送用户提交的数据,从而能够有效减轻服务器103的负担。
在服务器103接收到用户提交的数据之后,服务器103可以对用户提交的数据进行再次校验,并向客户端101或者WEB端102返回校验结果,其中客户端或者WEB端以及服务器均进行检测,能够保证校验结果的可靠性。
参见图1可以确定的是,服务器103对应有数据库104,在本实施例中,数据库104中例如可以存储有校验规则,例如参照步骤0,预先存储有检查表,其中,检查表可以包括针对至少一个关键字的校验规则。
或者还可以存储有客户端或者WEB端的相关数据,本实施例对数据库104中存储的具体内容不做限定,凡是服务器103需要存储的内容均可以存储在本实施例的数据库104中。
在本实施例中,客户端101或者WEB端102会与服务器103进行交互,其中交互的方式例如可以通过有线网络,该有线网络例如可以包括同轴电缆、双绞线和光纤等,其中交互的方式还例如可以是无线网络,该无线网络可以是2G网络、3G网络、4G网络或者5G网络、无线保真(Wireless Fidelity,简称WIFI)网络等。本申请实施例对交互的具体类型或者具体形式并不做限定,只要其能够实现服务器和终端交互的功能即可。
下面对交互过程进行简单说明:
WEB端在接收到用户提交的待校验数据之后,可以执行步骤1,向服务器请求检查表,接着服务器可以执行步骤2,向数据库请求检查表,数据库向服务器返回检查表,服务器再将检查表返回给WEB端,WEB端即可以根据获取到的检查表对待校验数据进行校验。
以及客户端的实现方式类似,客户端在接收到用户提交的待校验数据之后,可以执行步骤5,向服务器请求检查表,并且可以执行步骤5,接收服务器返回的检查表,从而客户端可以根据获取到的检查表对待校验数据进行校验。
以及客户端和/或服务器还可以将待校验数据发送给服务器,以使得服务器根据检查表对待校验数据进行校验。
上述结合图1介绍了数据校验的系统示意图,其中,用户提交的需要校验的数据,例如可以为账户数据、密码数据、填写的问卷数据等,下面结合用户登录某个网站或者某个应用程序的场景,对客户端接收用户提交的数据和WEB端接收用户提交的数据的一种可能的实现方式进行介绍。
图2为本申请提供的客户端接收用户提交的数据的示意图,图3为本申请实施例提供的WEB端接收用户提交的数据的示意图。
在一种可能的实现方式中,参见图2,假设当前用户打开某个应用程序的客户端,并且通过该客户端输入了账户名称和密码,以及点击了图2中所示的“登录”控件,则客户端此时就可以接收到用户提交的账户名称数据和密码数据,后续就可以对账户名称数据和密码数据进行相应的校验。
在另一种可能的实现方式中,参见图3,假设用户当前打开网站AAA的登录页面,并且在网站AAA的登录页面上输入了账户名称和密码,以及点击了图3中所示的“登录”控件,则WEB端此时就可以接收到用户提交的账户名称数据和密码数据,后续可以对账户名称数据和密码数据进行相应的校验。
上述图2和图3是结合登录的场景进行的说明,在实际实现过程中,用户提交的待校验的数据存在多种可能的实现方式,本实施例对数据的具体内容和类型不做限定。
在上述介绍的内容的基础上,下面对现有技术中对数据进行校验的实现方式进行介绍:
在目前的人机交互过程中,服务器会接收到大量的用户提交的数据,服务器需要对这些用户提交的数据进行校验。
在对用户提交的数据进行校验时,在一种可能的实现方式中,可以在服务器上运行针对待校验的数据的数据结构编写的大量的代码,从而校验用户提交的数据是否合法,如果数据结构十分庞大,那么服务器就需要运行很多的代码,在数据结构发生变化时,代码也要随之发生改变。
例如对于一个问卷系统,各个用户创建的问卷都是不同的,那么编写代码的实现方式中,就需要针对每一个问卷都编写一个检查程序,这样会导致对校验数据的工作量非常大。
在另一种可能的实现方式中,可以采用配置检查表的实现方式,对数据进行校验,其中,检查表是由数据检查方根据数据格式所编写的键值对对象,键值对对象也称key-value对象,是一种数据结构。其存储方式由一个或多个键值对组成。一个键值由一个键(key,也称关键字)和一个值(value)的对应组成。可以根据关键字来检索存放的值。
以上述介绍的问卷为例,采用检查表的方式进行数据校验的话,只需要针对问卷系统生成一个检查表即可,程序可以读取检查表中的内容,并且和通过问卷提交的数据进行匹配,就可以实现对数据的校验,而无需针对每一个问卷单独编写检查程序,从而可以有效减少数据校验的工作量。
在一种可能的实现方式中,键值对可以仅有一个层次,即键值对中的值可以为数字、字符串等基本的数据类型。
在另一种可能的实现方式中,键值对还可以嵌套有多个层次,即键值对中的值还可以为列表,键值对等数据类型,例如当前存在一个key-value1,该key-value1中的value是另一个key-value2。
目前的实现方式中无法实现对嵌套有多个层次的键值对的校验,从而导致数据校验的可靠性较低。
基于现有技术中的问题,本申请提供了一种数据处理方法及装置,以实现对嵌套有多个层次的键值对的校验,下面结合具体的实施例对本申请提供的数据处理方法进行说明。
图4为本申请其中一实施例提供的数据处理方法的流程图,可以理解的是,图4实施例的执行主体可以为服务器,还可以为WEB端,还可以为客户端,其取决于当前是哪个部件在对待校验数据进行校验。
如图4所示,该方法包括:
S401、获取第一键值对对应的第一校验规则,第一键值对为待校验数据中的任意一个键值对,第一键值对包括第一关键字和第一值。
在本实施例中,待校验数据可以包括多个键值对,以上述介绍的登录场景为例,则当前的待校验数据就可以包括账户名称数据和密码数据,其中,账户名称数据对应的键值对例如可以为“ID-小李”、密码数据对应的键值对例如可以为“password-516”,对于键值对“ID-小李”来说,键即为其中的ID,值即为其中的小李,以及键值对“password-516”来说,键即为其中的password,值即为其中的516。
以待校验数据中的任意一个键值对作为本实施例中的第一键值对,获取第一键值对对应的第一校验规则,其中,第一键值对包括第一关键字和第一值。
在本实施例中,可以预先设置有检查表,例如可以由技术人员生成检查表,或者可以由非技术人员使用WEB组件生成检查表,将生成的检查表存储在数据库中,并且生成一个检查标识与检查表绑定。
其中,检查表中可以设置有多个校验规则,每个校验规则可以对应有各自的关键字,用于指示当前的校验规则是针对某个键值对设置的校验规则,则在获取第一键值对对应的第一校验规则的一种可能的实现方式中,可以根据第一键值对中的第一关键字和各个校验规则进行匹配,以获取第一键值对对应的第一校验规则。
假设当前存在校验规则1和校验规则2,其中校验规则1对应的关键字是ID,校验规则2对应的关键字是password,以及假设当前的第一键值对为“ID-小李”,则可以根据第一键值对中的关键字ID和校验规则进行匹配,以获取“ID-小李”对应的校验规则1。
其中,校验规则1例如可以包括字符串长度是否小于预设长度、是否存在预设字符类型之外的字符等,在本实施例中,第一校验规则的具体实现方式可以根据实际需求进行选择,本实施例对此不做限制。
S402、获取第一值的数据类型,数据类型为嵌套类型或非嵌套类型。
其中,第一键值对例如可以为仅有一层的键值对,则第一键值对中的第一值的数据类型可以为非嵌套类型,其中非嵌套类型可以包括如下中的至少一种类型:数字、字符串。
上述的数字类型例如可以为int(整数)、long(长整数)、short(短整数)、float(单精度)、double(双精度)、byte(位)等基本的数据类型,字符串可以为数据类型string。
或者,第一键值对还可以为多层的嵌套的键值对,则第一键值对中的第一值的数据类型可以为嵌套类型,其中嵌套类型可以包括如下中的至少一种类型:列表、键值对,其中列表可以为数据类型list,键值对可以为数据类型key-value。
S403、根据第一校验规则和数据类型对第一值进行校验,得到校验结果。
本实施例中的第一校验规则用于对第一值进行校验,以及本实施例中针对嵌套类型的第一值和非嵌套类型的第一值,可以有不同的校验方式,因此可以根据第一校验规则和数据类型对第一值进行校验,得到的校验结果例如可以为校验成功,或者还可以为校验失败。
在一种可能的实现方式中,针对非嵌套类型的第一值,例如可以根据第一校验规则直接对第一值进行校验,例如校验第一值的数据类型是否符合预设类型,或者可以校验第一值的数据长度是否满足预设长度等。
在另一种可能的实现方式中,针对嵌套类型的第一值,因为当前的第一值可能是列表或者是键值对,例如针对为键值对的第一值,可以递归执行上述操作,以获取第一值的键值对对应的第二校验规则,并采用第二校验规则对第一值的键值对中的第二值进行校验,以得到预设规则,若第二值还是一个键值对,则可以继续上述的递归过程。继续执行上述的获取校验规则的方式,直至实现对最终的非嵌套类型的值的校验。
或者,在获取不到对应的校验规则时,可以丢弃当前的第一键值对。
因此,本申请实施例针对嵌套类型的第一值和非嵌套类型的第一值,均可以有效的实现对第一值的校验,从而能够有效保证数据校验的可靠性。
本申请实施例提供的数据处理方法,包括:获取第一键值对对应的第一校验规则,第一键值对为待校验数据中的任意一个键值对,第一键值对包括第一关键字和第一值。获取第一值的数据类型,数据类型为嵌套类型或非嵌套类型。根据第一校验规则和数据类型对第一值进行校验,得到校验结果。通过获取第一键值对对应的第一校验规则,以及获取第一值的数据类型,从而针对嵌套类型的第一值和非嵌套类型的第一值,均可以实现根据第一校验规则对第一值进行校验,避免了针对嵌套类型的第一值无法校验的情况,有效保证了数据校验的可靠性。
在上述实施例的基础上,下面结合具体的实施例对根据第一校验规则和数据类型对第一值进行校验的实现方式进行介绍,本申请中可以针对嵌套类型和非嵌套类型均进行第一值的校验,其中在对嵌套类型的第一值和非嵌套类型的第一值进行差异化处理之前,可以先进行一些通用的形式校验。
下面结合图5-图8介绍对第一值进行校验的可能的实现方式,图5为本申请实施例提供的对第一值进行校验的实现示意图,图6为本申请实施例提供的第一值为列表的实现示意图,图7为本申请实施例提供的第一值为键值对的单层嵌套示意图,图8为本申请实施例提供的第一值为键值对的多层嵌套示意图。
如图5所示,该方法包括:
S501、判断第一值是否为空,若是,则执行S502,若否,则执行S505。
在本实施例中,第一键值对中的第一值可能出现为空的情况,也就是说key-value中的value可能没有数据。
当第一值为空时,则无需对第一值进行数据类型的一系列处理,因此可以首先判断第一值是否为空。
S502、判断第一校验规则是否允许值为空,若是,则执行S503,若否,则执行S504。
其中,若第一值为空,则需要根据第一校验规则,判断第一校验规则是否允许值为空,也就是说值为空的数据是否合法。
在一种可能的实现方式中,第一值为空,然而第一校验规则不允许值为空,则可以确定针对第一值的校验结果为校验失败。
例如对于登录场景下用户提交的数据来说,账户名称和密码都是必要的数据,因此第一校验规则可以设置有,针对账户名称数据对应的键值对,其值不允许为空;以及针对密码数据对应的键值对,其值不允许为空。
以及假设当前用户提交的数据中,密码数据对应的第一键值对的第一值为空,则可以确定校验失败,在可能的实现方式中,可以显示提示信息,以告知用户密码不允许为空。
在另一种可能的实现方式中,第一值为空,但是第一校验规则允许值为空,则可以确定针对第一值的校验结果为校验成功。
例如对于问卷来说,问卷中可以存在选填项,其中选填项是指用户可以填写,也可以不填写,因此第一校验规则可以设置有,针对选填项对应的键值对,其值允许为空。
以及假设当前用户提交的数据中,选填项对应的第一键值对的第一值为空,因为这是允许的,并且针对空值没有需要进行的检验,因此可以确定校验成功。
S503、确定校验结果为校验成功。
S504、确定校验结果为校验失败。
在本实施例中,校验结果可以为校验成功或者可以为校验失败。
下面在对应有校验结果的步骤中,详细介绍各自对应的校验成功的情况或者校验失败的情况,因此此处对S503和S504不进行特殊说明。
S505、判断第一值的数据类型是否为第一校验规则中的预设类型中的一种,若否,则执行S504,若是,则执行S506。
若第一值不为空,则表明第一值中有数据,则可以判断第一值的数据类型是否为第一校验规则中的预设类型中的一种。
其中,第一校验规则的预设类型包括第一值的允许的数据类型,同样以问卷为例,假设问卷中需要用户填写年龄信息,则年龄信息对应的键值对中的关键字可以为age,值可以为用户填写的年龄。
假设对于年龄,允许的数据类型为数字,则第一校验规则中的预设类型例如可以包括如下中的至少一种:int、long、short、float、double。
在一种可能的实现方式中,在年龄信息对应的第一键值对中的第一值不是上述介绍的预设类型中的一种时,例如用户填写并提交的年龄数据是“女”,则当前第一值的数据类型就是字符串,其不是预设类型中的一种,因此第一值是不允许的类型,则可以确定第一值对应的检验结果为检验失败。
在可能的实现方式中,在校验失败时,还可以提示用户当前的第一值所允许的数据类型。
S506、判断第一值的数据类型是否为嵌套类型,若是,则执行S507,若否,则执行S512。
在另一种可能的实现方式中,若第一值的数据类型为第一校验规则中的预设类型中的一种,则表明当前第一值的数据类型是允许的,接着就可以判断第一值的数据类型是否嵌套类型了,从而在之后对非嵌套类型的第一值和嵌套类型的第一值进行差异化的处理。
S507、判断嵌套类型是否为列表,若是,则执行S508,若否,则执行S509。
在一种可能的实现方式中,若第一值的数据类型是嵌套类型,本实施例中针对列表和键值对可以采用不同的处理方式,因此可以判断嵌套类型是否为列表,以确定当前第一值的具体的嵌套类型是什么。
或者,还可以判断嵌套类型是否为键值对,本实施例对判断的具体实现不做限制,只要能够确定第一值的具体的嵌套类型是什么即可,或者还可以直接根据第一值的数据类型进行相应的操作,无需进行判断。
在一种可能的实现方式中,若确定嵌套类型为列表,则第一值可以为第一列表,其中第一列表中的各个元素均为数字或者字符串,即非嵌套类型,因此可以首先判断列表的长度是否在预设长度范围内。
S508、判断列表的长度是否在预设长度范围内,若是,则针对第一列表中的每一个元素,重复执行S501,若否,则执行S504。
在一种可能的实现方式中,若确定列表的长度在预设长度范围内,则可以确定列表的长度符合要求,针对第一列表中的每一个元素,重复执行上述的判断第一值是否为空的一系列操作,从而得到各个元素的校验结果,例如可以在任一个元素的校验结果为校验失败时,即确定第一值的校验结果为校验失败。
下面结合图6进行说明,参见图6,假设当前存在第一键值对,其中的第一关键字为A,第一值为图6所示的第一列表601,其中,第一列表601包括4个元素,分别是数字1、2、3、4。
则可以针对数字1、2、3、4分别执行上述的S510,从而得到各个数字的校验结果,并根据各个数字的校验结果确定第一值的校验结果。
在另一种可能的实现方式中,若确定列表的长度不在预设长度范围内,则可以确定列表的长度不符合要求,因此可以确定校验失败。
S509、判断待校验数据对应的检查表中是否存在第二关键字对应的第二校验规则,若是,则执行S510,若否,则执行S511。
在另一种可能的实现方式中,若确定嵌套类型不是列表,则可以确定嵌套类型是键值对,则第一值可以为第二键值对,其中,第二键值对包括第二关键字和第二值。
例如参见图7,假设当前存在第一键值对,其中第一关键字为B,第一值为图7中所示的第二键值对710,其中,第二键值对710的第二关键字为C,第二值为233。
针对不同的键值对,其对应的检验规则可能不相同,例如对于姓名的键值对的检验规则和对于年龄的键值对的检验规则,其必然是不相同的。
本实施例中待检验数据对应的检查表中存储有至少一个关键字对应的检验规则,此时需要对第一值进行检验,也就是需要对第二键值对进行检验,因此可以判断待校验数据对应的检查表中是否存在第二关键字对应的第二校验规则。
需要说明的是,在嵌套类型为列表时,通常仅存在一层嵌套,也就是说第一值为第一列表,第一列表中包括的就是至少一个非嵌套类型的数据了;然而,在嵌套类型为键值对时,可能存在多层嵌套,其中图8示意了存在4层嵌套的实现方式,其中,
第一键值对的第一关键字是D,第一值是第二键值对;
第二键值对的第二关键字是E,第二值是第三键值对;
第三键值对的第三关键字是F,第三值是第四键值对;
第四键值对的第四关键字是G,第四值是233。
图8中示例的是4层键值对嵌套的实现方式,在实际实现过程中,第一键值对具体存在几层嵌套,可以根据实际需求进行选择,本实施例对此不作限定,在可能的实现方式中,第一键值对的多层嵌套中,还可以嵌套有列表,比如图8中的第三键值对的第三值例如可以为一个列表,其均可以根据实际需求进行选择。
S510、根据第二校验规则和第二值的数据类型对第二值进行校验,得到校验结果。
在一种可能的实现方式中,若存在第二关键字对应的第二校验规则,则可以根据第二校验规则和第二值的数据类型对第二值进行校验,得到校验结果。
其中,根据第二校验规则和第二值的数据类型对第二值进行校验,得到校验结果的实现方式,和本实施例中介绍的根据第一校验规则和数据类型对第一值进行校验,得到校验结果的实现方式相同,也是从本实施例中的S510开始执行,不同之处仅在于此时采用的是第二校验规则,以及校验的是第二值。
也就是说,本实施例中不管针对何种形式的嵌套,均递归的获取需要校验的值对应的校验规则,并根据该校验规则对当前值进行校验,得到校验结果。
例如上述图8示例的4层嵌套中,当前确定第二关键字对应有第二校验规则,则重复执行上述过程,即判断第二值是否为空,以及后续的流程,并且会确定第二值的嵌套类型是键值对,则可以接着判断第三键值对中的第三关键字是否对应有第三校验规则,以递归执行上述流程,直至最终确定对于第四值233的校验结果。
S511、丢弃第一键值对或者忽略第一键值对。
在另一种可能的实现方式中,若确定第二关键字不存在对应的第二校验规则,则无法对第二键值对进行校验,无法对第二键值对进行校验,也就是表示无法对第一值进行校验,因此丢弃当前的第一键值对,或者忽略第一键值对,从而处理下一个键值对。
S512、判断第一值的数据类型是否为字符串,若是,则执行S513,若否,则执行S514。
若确定第一值的数据类型不是嵌套类型,则表明第一值的数据类型是数字或者字符,在第一值的数据类型是字符时,可以对字符的长度进行判断,以进行对第一值的校验,因此本实施例可以判断第一值的数据类型是否为字符串。
S513、判断第一值的长度是否在预设长度范围内,若是,则执行S514,若否,则执行S504。
若确定第一值的数据类型是字符串,则可以判断第一值的长度是否在预设长度范围内,其中,预设长度范围可以为第一校验规则中包括的信息,若第一值的长度超出预设长度范围,则可以确定校验失败。
在另一种可能的实现方式中,在第一值的类型是列表时,同样可以判断第一值的长度是否在预设长度范围内,若第一值的长度超出预设长度范围,则可以确定校验失败。
因为字符串和列表可以对应有长度,因此本实施例在第一值为字符串或者列表时,可以根据第一值的长度进行校验,若一种可能的数据类型也对应有长度,则针对该种数据类型的第一值,同样可以根据长度进行校验。
S514、获取检查函数。
在本实施例中,检查表中还可以设置有检查函数,其中,校验函数是用于检验数据是否合法的一类服务端程序,其可以由技术人员编写。
在第一值的数据类型是字符串并且长度在预设长度范围内时,或者在第一值不是字符串时,本实施例均可以根据检查函数对第一值进行校验。
其中,第一值的类型是字符类型并且第一值的长度在预设长度范围内,可以表明第一值的形式是合格的,此时再根据检查函数进行检查,能够有效节省工作量。
以及,第一值的类型不是字符串时,因为当前已经确定了第一值不是嵌套类型,则可以确定第一值的类型是数字,此时的第一值已经完成了不为空、数据类型合格的校验,因此可以进一步根据检查函数对第一值进行需要的检验,以提升检验的准确率。
因此可以获取检查函数,在一种可能的实现方式中,可以在检查表中只存储检查函数的函数名,引擎会根据函数名去寻找到检查函数,从而进行数据校验,例如根据第一关键字,在检查表中获取第一关键字对应的检查函数的函数名,从而可以根据函数名获取到检查函数。
或者,还可以通过一个lambda表达式来实现检查函数,并且存储为字符串形式,由引擎动态加载来进行数据校验。
S515、通过检查函数校验第一值是否合法,若是,则执行S503,若否,则执行S504。
例如可以根据检查凹函数对第一值的数据字段的内容进行校验,以确定第一值是否合法,例如在检查函数的检查通过时,确定第一值合法,从而确定校验结果为校验成功;或者在检查函数的检查不通过时,确定第一值不合法,从而确定校验结果为校验不成功。
在实际实现过程中,检查函数的具体检查逻辑可以根据实际需求进行选择,本实施例对此不做限定。
本申请实施例提供的数据处理方法,通过检查表的方式实现对嵌套类型和非嵌套类型的键值对的校验,能够有效提升数据检验的效率,增强开发过程和测试过程的可移植性和可复用性,使得数据的校验无需受到数据结构的限制,并且在对嵌套类型和非嵌套类型进行差异化处理之前,先进行一些共性的校验,从而能够有效提升数据校验的速度,减少不必要的校验步骤,同时本实施例中还可以编写有检查函数,从而实现对数据的动态检验,提升校验结果的准确性。
图9为本申请实施例提供的数据处理装置的结构示意图。如图9所示,该装置90包括:获取模块901以及校验模块902。
获取模块901,用于获取第一键值对对应的第一校验规则,所述第一键值对为待校验数据中的任意一个键值对,所述第一键值对包括第一关键字和第一值;
所述获取模块901,还用于获取所述第一值的数据类型,所述数据类型为嵌套类型或非嵌套类型;
校验模块902,用于根据所述第一校验规则和所述数据类型对所述第一值进行校验,得到校验结果。
在一种可能的设计中,所述嵌套类型包括如下至少一种类型:列表、键值对;
所述非嵌套类型包括如下至少一种类型:数字、字符串。
在一种可能的设计中,所述校验模块902具体用于:
判断所述第一值是否为空;
若是,若所述第一校验规则允许值为空,则确定校验结果为校验成功,若所述第一校验规则中不允许值为空,则确定校验结果为校验失败;
若否,则判断所述第一值的数据类型是否为所述第一校验规则中的预设类型中的一种,若不是预设类型中的一种,则确定校验结果为校验失败,若是预设类型中的一种,则根据所述第一值的数据类型,确定所述校验结果。
在一种可能的设计中,所述第一值的数据类型为嵌套类型;
所述校验模块902具体用于:
若所述嵌套类型为列表,则所述第一值为第一列表,针对所述第一列表中的每一个元素,重复执行上述判断所述第一值是否为空的操作,得到所述第一列表中的各元素的校验结果;或者
若所述嵌套类型为键值对,则所述第一值为第二键值对,所述第二键值对包括第二关键字和第二值,根据所述第二关键字和所述待校验数据对应的检查表对所述第二值进行校验,得到校验结果。
在一种可能的设计中,所述校验模块902具体用于:
判断所述待校验数据对应的检查表中是否存在所述第二关键字对应的第二校验规则;
若是,则根据所述第二校验规则和所述第二值的数据类型对所述第二值进行校验,得到校验结果。
若否,则丢弃所述第一键值对或者忽略所述第一键值对。
在一种可能的设计中,所述第一值的数据类型为非嵌套类型;
所述校验模块902具体用于:
判断所述第一值的数据类型是否为字符串;
若是,则在所述第一值的长度不在预设长度范围内时,确定所述校验结果为校验失败。
若否,则获取检查函数,并通过所述检查函数对所述数据类型进行校验,得到所述校验结果。
本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图10为本申请实施例提供的数据处理设备的硬件结构示意图,如图10所示,本实施例的数据处理设备100包括:处理器1001以及存储器1002;其中
存储器1002,用于存储计算机执行指令;
处理器1001,用于执行存储器存储的计算机执行指令,以实现上述实施例中数据处理方法所执行的各个步骤。具体可以参见前述方法实施例中的相关描述。
可选地,存储器1002既可以是独立的,也可以跟处理器1001集成在一起。
当存储器1002独立设置时,该数据处理设备还包括总线1003,用于连接所述存储器1002和处理器1001。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上数据处理设备所执行的数据处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (14)
1.一种数据处理方法,其特征在于,包括:
获取第一键值对对应的第一校验规则,所述第一键值对为待校验数据中的任意一个键值对,所述第一键值对包括第一关键字和第一值;
获取所述第一值的数据类型,所述数据类型为嵌套类型或非嵌套类型;
根据所述第一校验规则和所述数据类型对所述第一值进行校验,得到校验结果。
2.根据权利要求1所述的方法,其特征在于,
所述嵌套类型包括如下至少一种类型:列表、键值对;
所述非嵌套类型包括如下至少一种类型:数字、字符串。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述第一校验规则和所述数据类型对所述第一值进行校验,得到校验结果,包括:
判断所述第一值是否为空;
若是,若所述第一校验规则允许值为空,则确定校验结果为校验成功,若所述第一校验规则中不允许值为空,则确定校验结果为校验失败;
若否,则判断所述第一值的数据类型是否为所述第一校验规则中的预设类型中的一种,若不是预设类型中的一种,则确定校验结果为校验失败,若是预设类型中的一种,则根据所述第一值的数据类型,确定所述校验结果。
4.根据权利要求3所述的方法,其特征在于,所述第一值的数据类型为嵌套类型;根据所述第一值的数据类型,确定所述校验结果,包括:
若所述嵌套类型为列表,则所述第一值为第一列表,针对所述第一列表中的每一个元素,重复执行上述判断所述第一值是否为空的操作,得到所述第一列表中的各元素的校验结果;或者
若所述嵌套类型为键值对,则所述第一值为第二键值对,所述第二键值对包括第二关键字和第二值,根据所述第二关键字和所述待校验数据对应的检查表对所述第二值进行校验,得到校验结果。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第二关键字和所述待校验数据对应的检查表对所述第二值进行校验,得到校验结果,包括:
判断所述待校验数据对应的检查表中是否存在所述第二关键字对应的第二校验规则;
若是,则根据所述第二校验规则和所述第二值的数据类型对所述第二值进行校验,得到校验结果;
若否,则丢弃所述第一键值对或者忽略所述第一键值对。
6.根据权利要求1或2所述的方法,其特征在于,所述第一值的数据类型为非嵌套类型;根据所述第一值的数据类型,确定所述校验结果,包括:
判断所述第一值的数据类型是否为字符串;
若是,则在所述第一值的长度不在预设长度范围内时,确定所述校验结果为校验失败;
若否,则获取检查函数,并通过所述检查函数对所述数据类型进行校验,得到所述校验结果。
7.一种数据处理装置,其特征在于,包括:
获取模块,用于获取第一键值对对应的第一校验规则,所述第一键值对为待校验数据中的任意一个键值对,所述第一键值对包括第一关键字和第一值;
所述获取模块,还用于获取所述第一值的数据类型,所述数据类型为嵌套类型或非嵌套类型;
校验模块,用于根据所述第一校验规则和所述数据类型对所述第一值进行校验,得到校验结果。
8.根据权利要求7所述的装置,其特征在于,
所述嵌套类型包括如下至少一种类型:列表、键值对;
所述非嵌套类型包括如下至少一种类型:数字、字符串。
9.根据权利要求7或8所述的装置,其特征在于,所述校验模块具体用于:
判断所述第一值是否为空;
若是,若所述第一校验规则允许值为空,则确定校验结果为校验成功,若所述第一校验规则中不允许值为空,则确定校验结果为校验失败;
若否,则判断所述第一值的数据类型是否为所述第一校验规则中的预设类型中的一种,若不是预设类型中的一种,则确定校验结果为校验失败,若是预设类型中的一种,则根据所述第一值的数据类型,确定所述校验结果。
10.根据权利要求9所述的装置,其特征在于,所述第一值的数据类型为嵌套类型;
所述校验模块具体用于:
若所述嵌套类型为列表,则所述第一值为第一列表,针对所述第一列表中的每一个元素,重复执行上述判断所述第一值是否为空的操作,得到所述第一列表中的各元素的校验结果;或者
若所述嵌套类型为键值对,则所述第一值为第二键值对,所述第二键值对包括第二关键字和第二值,根据所述第二关键字和所述待校验数据对应的检查表对所述第二值进行校验,得到校验结果。
11.根据权利要求10所述的装置,其特征在于,所述校验模块具体用于:
判断所述待校验数据对应的检查表中是否存在所述第二关键字对应的第二校验规则;
若是,则根据所述第二校验规则和所述第二值的数据类型对所述第二值进行校验,得到校验结果;
若否,则丢弃所述第一键值对或者忽略所述第一键值对。
12.根据权利要求7或8所述的装置,其特征在于,所述第一值的数据类型为非嵌套类型;
所述校验模块具体用于:
判断所述第一值的数据类型是否为字符串;
若是,则在所述第一值的长度不在预设长度范围内时,确定所述校验结果为校验失败;
若否,则获取检查函数,并通过所述检查函数对所述数据类型进行校验,得到所述校验结果。
13.一种数据处理设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如权利要求1至6中任一所述的方法。
14.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010805786.XA CN111897833A (zh) | 2020-08-12 | 2020-08-12 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010805786.XA CN111897833A (zh) | 2020-08-12 | 2020-08-12 | 数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111897833A true CN111897833A (zh) | 2020-11-06 |
Family
ID=73228873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010805786.XA Pending CN111897833A (zh) | 2020-08-12 | 2020-08-12 | 数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897833A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535857A (zh) * | 2021-08-04 | 2021-10-22 | 阿波罗智联(北京)科技有限公司 | 数据同步方法及装置 |
CN114202947A (zh) * | 2021-12-07 | 2022-03-18 | 北京百度网讯科技有限公司 | 车联网数据传输方法、装置及自动驾驶车辆 |
-
2020
- 2020-08-12 CN CN202010805786.XA patent/CN111897833A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535857A (zh) * | 2021-08-04 | 2021-10-22 | 阿波罗智联(北京)科技有限公司 | 数据同步方法及装置 |
CN114202947A (zh) * | 2021-12-07 | 2022-03-18 | 北京百度网讯科技有限公司 | 车联网数据传输方法、装置及自动驾驶车辆 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108427731B (zh) | 页面代码的处理方法、装置、终端设备及介质 | |
US8572574B2 (en) | Solving hybrid constraints to validate specification requirements of a software module | |
US20120017200A1 (en) | Solving Hybrid Constraints to Validate a Security Software Module for Detecting Injection Attacks | |
CN110457628B (zh) | 网页版本校验方法、装置、设备及存储介质 | |
CN111897833A (zh) | 数据处理方法及装置 | |
CN110888838A (zh) | 基于对象存储的请求处理方法、装置、设备及存储介质 | |
CN111273891A (zh) | 基于规则引擎的业务决策方法、装置及终端设备 | |
CN111209736A (zh) | 文本文件解析方法、装置、计算机设备及存储介质 | |
CN112861346A (zh) | 数据处理系统、方法及电子设备 | |
CN108776665B (zh) | 一种数据处理方法及装置 | |
CN113391972A (zh) | 一种接口测试方法及装置 | |
CN112600864A (zh) | 一种验证码校验方法、装置、服务器及介质 | |
CN106502707B (zh) | 代码生成方法及装置 | |
CN112052256A (zh) | 多版本请求返回方法、装置、计算机设备及可读存储介质 | |
CN111586202A (zh) | 网络掩码校验方法、装置、电子设备及存储介质 | |
CN110806979A (zh) | 接口返回值的校验方法、装置、设备及存储介质 | |
CN111984591A (zh) | 文件存储、读取方法、装置、设备及计算机可读存储介质 | |
CN111459911B (zh) | 业务数据的处理方法及设备 | |
CN111639475B (zh) | 产品编码的生成方法、装置及电子设备 | |
CN115129509A (zh) | 一种数据传输方法、装置、介质 | |
CN113407444A (zh) | 一种接口的测试用例生成方法、装置、设备及存储介质 | |
CN113342647A (zh) | 一种测试数据的生成方法及装置 | |
CN112149100A (zh) | 一种验证方法、装置、电子设备及存储介质 | |
CN113672248A (zh) | 一种补丁获取方法、装置、服务端及存储介质 | |
CN111752559A (zh) | 前后端分离系统、方法、装置和存储介质 |
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 |