CN112905182A - 一种数据解析的方法和装置 - Google Patents

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

Info

Publication number
CN112905182A
CN112905182A CN201911229033.2A CN201911229033A CN112905182A CN 112905182 A CN112905182 A CN 112905182A CN 201911229033 A CN201911229033 A CN 201911229033A CN 112905182 A CN112905182 A CN 112905182A
Authority
CN
China
Prior art keywords
data
information
attribute
analyzed
compared
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
Application number
CN201911229033.2A
Other languages
English (en)
Inventor
戴旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201911229033.2A priority Critical patent/CN112905182A/zh
Publication of CN112905182A publication Critical patent/CN112905182A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种数据解析的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:获取解析指令;根据解析指令获取上一次解析结果以确定待比较数据信息,以及根据解析指令确定待解析数据信息;将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息;根据所述差异信息确定所述解析指令的解析结果。该实施方式根据上一次的解析数据信息与待解析数据信息进行比较以确定出差异信息、再利用差异信息确定最终的解析结果的技术手段,克服了现有技术中因数据解析时出现字段数据缺失或遗漏的现象而导致的程序编译错误的问题,进而能够修复数据解析时出现的字段数据缺失或遗漏的问题、避免由字段缺失带来的编译错误。

Description

一种数据解析的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据解析的方法和装置。
背景技术
在客户端的开发中,通常使用MVC架构方法(一种数据模型(model)-视图(view)-控制器(controller)分离的架构方法);具体地,需要从原始数据获取源(如数据接口)处接收数据并将所需数据解析到数据模型(model)中,进而可以由数据模型(model)将数据传递给视图(view),并由控制器(controller)负责控制视图(view)进行展示。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
在现有技术的数据解析过程中,通常是直接获取所需数据,即仅进行简单的赋值操作,这种直接获取数据的方式常常产生字段缺失、遗漏的问题;而在真正的开发过程中,开发人员习惯不同,或者编写上的逻辑判断不周密等现实问题是难以避免的,基于此现实问题,字段缺失、遗漏的问题常常会使得程序在编译时发生难以预料的异常或错误,而这些异常或错误是频繁且难以排查的。
发明内容
有鉴于此,本发明实施例提供一种数据解析的方法和装置,能够根据上一次的解析数据信息与待解析数据信息进行比较以确定出差异信息、再利用差异信息确定最终的解析结果,进而能够修复数据解析时出现的字段数据缺失或遗漏的问题,避免了由字段缺失带来的编译错误。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据解析的方法,包括:
获取解析指令;根据所述解析指令获取上一次解析结果以确定待比较数据信息,以及根据所述解析指令确定待解析数据信息;
将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息;
根据所述差异信息确定所述解析指令的解析结果。
可选地,所述待比较数据信息包括:数据来源信息,待比较对象属性信息,以及所述数据来源和所述待比较对象属性的对应关系;
所述待解析数据信息包括:所述数据来源信息、待解析对象属性信息,以及所述数据来源和所述待解析对象属性的对应关系。
可选地,将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息,包括:
确定与所述数据来源对应的待比较对象属性;以及确定与所述数据来源对应的待解析对象属性;
将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息。
可选地,所述待比较对象属性包括:待比较对象属性名、待比较对象属性类型;所述待解析对象属性包括:待解析对象属性名、待解析对象属性类型;
将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息,包括:
对于同一数据来源,在与该数据来源对应的待解析对象属性名中,判断与该数据来源对应的待比较对象属性名是否存在;若不存在,将不存在的待比较对象属性作为第一差异信息;若存在,
对于相同的对象属性名,判断待解析对象属性名的待解析对象属性类型与待比较对象属性名的待比较对象属性类型是否相同;将属性类型不相同的待比较对象属性和待解析对象属性作为第二差异信息;
以第一差异信息和第二差异信息共同作为差异信息。
可选地,根据所述差异信息确定所述解析指令的解析结果,包括:
根据第一差异信息中的待比较对象属性信息,对所述待解析对象属性信息进行补充,以确定所述解析结果;以及,
根据第二差异信息中的待比较对象属性信息,对第二差异信息中的待解析对象属性信息进行修正,以确定所述解析结果。
可选地,在根据所述差异信息确定所述解析指令的解析结果之后,还包括:
将所述差异信息进行展示提醒。
根据本发明实施例的再一个方面,提供了一种数据解析的装置,其特征在于,包括:
获取模块,用于获取解析指令;根据所述解析指令获取上一次解析结果以确定待比较数据信息,以及根据所述解析指令确定待解析数据信息;
比较模块,用于将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息;
确定结果模块,用于根据所述差异信息确定所述解析指令的解析结果。
可选地,所述待比较数据信息包括:数据来源信息,待比较对象属性信息,以及所述数据来源和所述待比较对象属性的对应关系;
所述待解析数据信息包括:所述数据来源信息、待解析对象属性信息,以及所述数据来源和所述待解析对象属性的对应关系。
可选地,所述比较模块将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息,包括:
确定与所述数据来源对应的待比较对象属性;以及确定与所述数据来源对应的待解析对象属性;
将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息。
可选地,所述待比较对象属性包括:待比较对象属性名、待比较对象属性类型;所述待解析对象属性包括:待解析对象属性名、待解析对象属性类型;
所述比较模块将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息,包括:
对于同一数据来源,在与该数据来源对应的待解析对象属性名中,判断与该数据来源对应的待比较对象属性名是否存在;若不存在,将不存在的待比较对象属性作为第一差异信息;若存在,
对于相同的对象属性名,判断待解析对象属性名的待解析对象属性类型与待比较对象属性名的待比较对象属性类型是否相同;将属性类型不相同的待比较对象属性和待解析对象属性作为第二差异信息;
以第一差异信息和第二差异信息共同作为差异信息。
可选地,所述确定结果模块根据所述差异信息确定所述解析指令的解析结果,包括:
根据第一差异信息中的待比较对象属性信息,对所述待解析对象属性信息进行补充,以确定所述解析结果;以及,
根据第二差异信息中的待比较对象属性信息,对第二差异信息中的待解析对象属性信息进行修正,以确定所述解析结果。
可选地,所述确定结果模块在根据所述差异信息确定所述解析指令的解析结果之后,还包括:
将所述差异信息进行展示提醒。
根据本发明实施例的另一个方面,提供了一种数据解析的电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明提供的数据解析的方法。
根据本发明实施例的还一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的数据解析的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用根据上一次的解析数据信息与待解析数据信息进行比较以确定出差异信息、再利用差异信息确定最终的解析结果的技术手段,所以克服了现有技术中因数据解析时出现字段数据缺失或遗漏的现象而导致的程序编译错误的问题,进而达到能够修复数据解析时出现的字段数据缺失或遗漏的问题、避免由字段缺失带来的编译错误的技术效果。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种数据解析的方法的主要流程的示意图;
图2是本发明一具体实施例中数据解析的方法的执行过程流程示意图
图3是根据本发明实施例的一种数据解析的装置的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种数据解析的方法的主要流程的示意图,如图1所示,包括:
步骤S101、获取解析指令;根据所述解析指令获取上一次解析结果以确定待比较数据信息,以及根据所述解析指令确定待解析数据信息;
步骤S102、将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息;
步骤S103、根据所述差异信息确定所述解析指令的解析结果。
在MVC架构方法(一种数据模型(model)-视图(view)-控制器(controller)分离的架构方法)中,客户端请求数据并将数据信息可视化的过程一般如下:页面控制器(controller)首次发送数据请求给服务端,服务端接收到数据请求之后把相应的原始数据发送回客户端;客户端根据收到的原始数据创建数据模型(model),并将原始数据解析到数据模型(model)中;最后把数据解析完成的数据模型(model)传递给视图(view),并由控制器(controller)负责控制视图(view)进行展示;
当上述页面需要刷新时,页面控制器(controller)会发出新的数据请求用以刷新当前页面;当客户端请求到新的数据之后,通常会复用已建立好的数据模型(model),利用从服务端返回的新的数据来更新这个已建立好的数据模型(model),或者更新这个数据模型(model)中的一些属性;
所述解析指令可以是在上述过程中,当客户端接收到服务端返回的原始数据之后生成的、用于将原始数据解析到数据模型(model)中的指令。
当需要对页面进行刷新时(即该页面非首次向服务端请求数据时),所述待比较数据信息可以是上一次已解析完成的数据信息;
所述待解析数据信息可以是在当前解析过程中,原始数据中的用于更新数据模型(model)的数据信息。
本发明能够根据上一次的解析数据信息与当前解析过程中的待解析数据信息进行比较以确定出差异信息、再利用差异信息确定最终的解析结果,进而能够修复数据解析时出现的字段数据缺失或遗漏的问题,避免了由字段缺失带来的编译错误。
在一些实施例中,所述待比较数据信息包括:数据来源信息,待比较对象属性信息,以及所述数据来源和所述待比较对象属性的对应关系;
所述待解析数据信息包括:所述数据来源信息、待解析对象属性信息,以及所述数据来源和所述待解析对象属性的对应关系。
数据来源可以是具体的数据接口,可以用数据接口标识来表示数据接口;对象属性可以是在解析过程中所需的数据的属性,可以包括属性名和属性类型,比如属性名为p1、p2等,属性类型可以是字符串类型,或日期事件类型,或数值类型等数据类型。
在具体实施例中,可以通过哈希表来存储数据来源信息、对象属性信息、以及数据来源和对象属性的对应关系;具体地,可以以数据接口标识作为哈希表中的key值,以字符串数组作为哈希表中的value值;一个数据接口标识对应一个字符串数组,该字符串数组中存储的可以是从该接口获取到的已经解析完成的对象属性信息;字符串数组的命名可以为p1、p2、p3……等。
在一些实施例中,将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息,包括:
确定与所述数据来源对应的待比较对象属性;以及确定与所述数据来源对应的待解析对象属性;
将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息。
由于待比较对象属性可以是上一次解析完成的属性信息,待比较对象属性可以是此次解析过程中将要解析的属性信息,所以将数据来源相同的待比较对象属性与待解析对象属性进行比较,可以发现是否存在上次解析过、而此次未解析的数据,或者上次解析时的数据类型与此次解析时的数据类型不相同的数据;这些差异都可以认为是所述差异信息。
在一些实施例中,所述待比较对象属性包括:待比较对象属性名、待比较对象属性类型;所述待解析对象属性包括:待解析对象属性名、待解析对象属性类型;
将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息,包括:
对于同一数据来源,在与该数据来源对应的待解析对象属性名中,判断与该数据来源对应的待比较对象属性名是否存在;若不存在,将不存在的待比较对象属性作为第一差异信息;若存在,
对于相同的对象属性名,判断待解析对象属性名的待解析对象属性类型与待比较对象属性名的待比较对象属性类型是否相同;将属性类型不相同的待比较对象属性和待解析对象属性作为第二差异信息;
以第一差异信息和第二差异信息共同作为差异信息。
对于同一数据来源,可以对比待解析对象属性名与待比较对象属性名的异同点,具体地可以在待解析对象属性名中查找待比较对象属性名;如果找不到,可以认为对于该数据来源,存在上次解析过、而这次可能由于系统问题或是页面更新的问题而未解析到的数据;对于这样的数据,是容易导致编译错误的;
而对于找得到的数据名,还可以对比上次解析的数据类型和这次解析的数据类型是否相同,若数据名相同而数据类型发生了变化,对于这样的数据,也是容易导致编译错误的。
在一些实施例中,根据所述差异信息确定所述解析指令的解析结果,包括:
根据第一差异信息中的待比较对象属性信息,对所述待解析对象属性信息进行补充,以确定所述解析结果;以及,
根据第二差异信息中的待比较对象属性信息,对第二差异信息中的待解析对象属性信息进行修正,以确定所述解析结果。
在确定了差异信息之后,可以根据所述差异信息确定所述解析指令的解析结果,具体地,可以从此次应该解析的数据中,找到上次解析过而这次没解析到的数据名,进行数据更新补充或修正,例如,如果是由于系统问题或是网络问题导致的数据遗漏,可以运行时KVO技术(一种键值监听技术,用于监听数据模型的变化从而可以动态的修改对应视图)将正确的数据更新过来,或者,如果是由于页面更新导致确实某些数据消失了,则可以补充该数据名,并将值设置为默认值(比如0)。
在一些实施例中,在根据所述差异信息确定所述解析指令的解析结果之后,还包括:
将所述差异信息进行展示提醒。
当确定解析指令的解析结果之后,还可以将相关的数据属性名上报给开发者;假如,在程序应用的测试开发阶段,可以直接把字段名打印或者弹窗提示出来,以提示开发者进行相应的代码修复。
下面以一具体实施例说明本发明中的数据解析的方法:
可以为数据模型维护一个与之对应的哈希表,哈希表用来记录一共有多少个接口用来更新该数据模型;其中,哈希表的key值可以是数据接口标识,value可以是一个名为pNames的字符串数组的属性,pNames可以用来保存当前接口已经解析完成的字段属性名。当对数据接口第一次解析的时候,在获取数据的同时,还可以根据每一个接口名,在解析该接口下的字段数据的时候,更新哈希表;
可以使用与现有技术不同的从数据源取值的方法,例如,可以创建一个取值函数new_extractValue(functionId,data,pNames,self),利用该函数方法,可以在每次获取返回数据之前,把pNames添加到数据模型的哈希表中,上述参数中self对应了数据模型,functionId对应数据接口标识,pNames对应将要解析的字段属性名,data对应将要解析的数据内容;通过functionId作为key值在哈希表中检索pNames数组,然后把对应的字段属性名(如p1)添加到pNames中,并且返回从data中获取到的值;一种具体实现上述过程的解析函数的伪代码可以如下:
Figure BDA0002303016560000101
这样,在第一遍解析完成之后,数据模型中的各个属性名被更新,而且哈希表中也有了相应的所有接口的解析完成的字段属性名。
当对页面刷新的时候,需要重新从数据接口获取最新的数据,当获取完新的数据之后,数据模型中的内容也会被更新;在这个过程中,还可以自动比较前后相同接口两次解析的字段属性名是否一致;其中,可以使用hook方法(钩子方法)在上述解析函数(parse)的前后,加handleBefore函数和handleAfter函数,使得在解析函数(parse)执行前先自动执行handleBefore函数,并在解析函数(parse)执行前后再自动执行handleAfter函数;
具体地,可以在handleBefore函数中设置如下功能:
从数据模型的哈希表中把数据接口functionId对应的pNames取出来,生成一个临时变量pNames_copy保存下来;这样,可以在此次解析前将上一次的解析结果保存下来;
可以在handleAfter函数中设置如下功能:
对比当下的新的pNames(即此次解析完之后的新的数据属性信息)和pNames_copy两个数组的异同点,在pNames数组中查找pNames_copy这些属性名,如果找到了,说明该字段已经被更新;如果找不到,说明这个字段对应的属性没有被更新;这样,即获得了上一次解析完的数据与这一次解析的数据的差异信息;
还可以增加一个flag的字段标示,假如是第一次解析、首次建立数据模型时,可以将flag的值为0,此时不进行比较,即不执行上述handleBefore函数和handleAfter函数;当首次执行完parse方法之后,可以把flag的值设置为1,这样在第二次解析及之后解析的时候,通过判断flag的值为1,就可以确定执行上述的handleBefore函数和handleAfter函数。
最后,可以根据所述差异信息确定此次解析最终的解析结果,具体操作可以如下:
可以使用运行时KVO技术,把差异信息中的属性的值更新过来,即从原始数据中提取出相应的字段的值更新到数据模型相关的属性中;对于这种处理方法,可以由服务端下发一个开关控制,以控制是否执行修复,以免草率修复带来的其他问题;这种修复问题的方式,一定程度上可以弥补当线上发生因为属性未更新导致的严重bug的情况;
当应用程序还在开发阶段或测试阶段时,还可以将相关的字段名上报给开发者,例如:可以直接把字段名打印或者弹窗提示出来,提示开发者进行代码修复。
图2是上述具体实施例中的数据解析的方法的执行过程流程示意图,如图2所示,包括:
步骤S201:对现有解析函数进行处理,使用上述新的取值函数new_extractValue(functionId,data,pNames,self),并在解析函数前后增加handleBefore函数和handleAfter函数;
步骤S202:执行处理后的解析函数;
步骤S203:判断对数据源是否为首次解析;若是,跳转到步骤S204;若否,跳转到步骤S207;
步骤S204:当首次解析时,建立数据接口与数据属性对应的哈希表;
步骤S205:获取待解析数据信息;待解析数据信息可以包括数据属性名、数据属性类型、数据值;
步骤S206:根据待解析数据确定解析结果;
步骤S207:当不是首次解析时,查找哈希表以确定待比较数据信息,以及获取待解析数据信息;
步骤S208:对待解析数据信息与待比较数据信息进行比较;
步骤S209:判断是否存在差异信息;若是,跳转到步骤S206;若否,跳转到步骤S210;
步骤S210:根据所述差异信息确定所述解析指令的解析结果。
图3是根据本发明实施例的一种数据解析的装置的主要模块的示意图,如图3所示,数据解析的装置300包括:
获取模块301,用于获取解析指令;根据所述解析指令获取上一次解析结果以确定待比较数据信息,以及根据所述解析指令确定待解析数据信息;
比较模块302,用于将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息;
确定结果模块303,用于根据所述差异信息确定所述解析指令的解析结果。
在MVC架构方法(一种数据模型(model)-视图(view)-控制器(controller)分离的架构方法)中,客户端请求数据并将数据信息可视化的过程一般如下:页面控制器(controller)首次发送数据请求给服务端,服务端接收到数据请求之后把相应的原始数据发送回客户端;客户端根据收到的原始数据创建数据模型(model),并将原始数据解析到数据模型(model)中;最后把数据解析完成的数据模型(model)传递给视图(view),并由控制器(controller)负责控制视图(view)进行展示;
当上述页面需要刷新时,页面控制器(controller)会发出新的数据请求用以刷新当前页面;当客户端请求到新的数据之后,通常会复用已建立好的数据模型(model),利用从服务端返回的新的数据来更新这个已建立好的数据模型(model),或者更新这个数据模型(model)中的一些属性;
所述解析指令可以是在上述过程中,当客户端接收到服务端返回的原始数据之后生成的、用于将原始数据解析到数据模型(model)中的指令。
当需要对页面进行刷新时(即该页面非首次向服务端请求数据时),所述待比较数据信息可以是上一次已解析完成的数据信息;
所述待解析数据信息可以是在当前解析过程中,原始数据中的用于更新数据模型(model)的数据信息。
本发明能够根据上一次的解析数据信息与当前解析过程中的待解析数据信息进行比较以确定出差异信息、再利用差异信息确定最终的解析结果,进而能够修复数据解析时出现的字段数据缺失或遗漏的问题,避免了由字段缺失带来的编译错误。
在一些实施例中,所述待比较数据信息包括:数据来源信息,待比较对象属性信息,以及所述数据来源和所述待比较对象属性的对应关系;
所述待解析数据信息包括:所述数据来源信息、待解析对象属性信息,以及所述数据来源和所述待解析对象属性的对应关系。
数据来源可以是具体的数据接口,可以用数据接口标识来表示数据接口;对象属性可以是在解析过程中所需的数据的属性,可以包括属性名和属性类型,比如属性名为p1、p2等,属性类型可以是字符串类型,或日期事件类型,或数值类型等数据类型。
在具体实施例中,可以通过哈希表来存储数据来源信息、对象属性信息、以及数据来源和对象属性的对应关系;具体地,可以以数据接口标识作为哈希表中的key值,以字符串数组作为哈希表中的value值;一个数据接口标识对应一个字符串数组,该字符串数组中存储的可以是从该接口获取到的已经解析完成的对象属性信息;字符串数组的命名可以为p1、p2、p3……等。
在一些实施例中,所述比较模块302将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息,包括:
确定与所述数据来源对应的待比较对象属性;以及确定与所述数据来源对应的待解析对象属性;
将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息。
由于待比较对象属性可以是上一次解析完成的属性信息,待比较对象属性可以是此次解析过程中将要解析的属性信息,所以将数据来源相同的待比较对象属性与待解析对象属性进行比较,可以发现是否存在上次解析过、而此次未解析的数据,或者上次解析时的数据类型与此次解析时的数据类型不相同的数据;这些差异都可以认为是所述差异信息。
在一些实施例中,所述待比较对象属性包括:待比较对象属性名、待比较对象属性类型;所述待解析对象属性包括:待解析对象属性名、待解析对象属性类型;
所述比较模块302将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息,包括:
对于同一数据来源,在与该数据来源对应的待解析对象属性名中,判断与该数据来源对应的待比较对象属性名是否存在;若不存在,将不存在的待比较对象属性作为第一差异信息;若存在,
对于相同的对象属性名,判断待解析对象属性名的待解析对象属性类型与待比较对象属性名的待比较对象属性类型是否相同;将属性类型不相同的待比较对象属性和待解析对象属性作为第二差异信息;
以第一差异信息和第二差异信息共同作为差异信息。
对于同一数据来源,可以对比待解析对象属性名与待比较对象属性名的异同点,具体地可以在待解析对象属性名中查找待比较对象属性名;如果找不到,可以认为对于该数据来源,存在上次解析过、而这次未解析到的数据;对于这样的数据,是容易导致编译错误的;
而对于找得到的数据名,还可以对比上次解析的数据类型和这次解析的数据类型是否相同,若数据名相同而数据类型发生了变化,对于这样的数据,也是容易导致编译错误的。
在一些实施例中,所述确定结果模块303根据所述差异信息确定所述解析指令的解析结果,包括:
根据第一差异信息中的待比较对象属性信息,对所述待解析对象属性信息进行补充,以确定所述解析结果;以及,
根据第二差异信息中的待比较对象属性信息,对第二差异信息中的待解析对象属性信息进行修正,以确定所述解析结果。
在确定了差异信息之后,可以根据所述差异信息确定所述解析指令的解析结果,具体地,可以从此次应该解析的数据中,找到上次解析过而这次没解析到的数据名,进行数据更新补充或修正,例如,如果是由于系统问题或是网络问题导致的数据遗漏,可以运行时KVO技术(一种键值监听技术,用于监听数据模型的变化从而可以动态的修改对应视图)将正确的数据更新过来,或者,如果是由于页面更新导致确实某些数据消失了,则可以补充该数据名,并将值设置为默认值(比如0)。
在一些实施例中,所述确定结果模块303在根据所述差异信息确定所述解析指令的解析结果之后,还包括:
将所述差异信息进行展示提醒。
当确定解析指令的解析结果之后,还可以将相关的数据属性名上报给开发者;假如,在程序应用的测试开发阶段,可以直接把字段名打印或者弹窗提示出来,以提示开发者进行相应的代码修复。
图4示出了可以应用本发明实施例的数据解析的方法或数据解析的装置的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的数据解析的方法一般由服务器405执行,相应地,数据解析的装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、比较模块和确定结果模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取模块还可以被描述为“向所连接的服务端发送图片获取请求的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:步骤S101、获取解析指令;根据所述解析指令获取上一次解析结果以确定待比较数据信息,以及根据所述解析指令确定待解析数据信息;步骤S102、将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息;步骤S103、根据所述差异信息确定所述解析指令的解析结果。
根据本发明实施例的技术方案,因为采用根据上一次的解析数据信息与待解析数据信息进行比较以确定出差异信息、再利用差异信息确定最终的解析结果的技术手段,所以克服了现有技术中因数据解析时出现字段数据缺失或遗漏的现象而导致的程序编译错误的问题,进而达到能够修复数据解析时出现的字段数据缺失或遗漏的问题、避免由字段缺失带来的编译错误的技术效果。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (9)

1.一种数据解析的方法,其特征在于,包括:
获取解析指令;根据所述解析指令获取上一次解析结果以确定待比较数据信息,以及根据所述解析指令确定待解析数据信息;
将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息;
根据所述差异信息确定所述解析指令的解析结果。
2.根据权利要求1所述的方法,其特征在于,
所述待比较数据信息包括:数据来源信息,待比较对象属性信息,以及所述数据来源和所述待比较对象属性的对应关系;
所述待解析数据信息包括:所述数据来源信息、待解析对象属性信息,以及所述数据来源和所述待解析对象属性的对应关系。
3.根据权利要求2所述的方法,其特征在于,将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息,包括:
确定与所述数据来源对应的待比较对象属性;以及确定与所述数据来源对应的待解析对象属性;
将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息。
4.根据权利要求3所述的方法,其特征在于,所述待比较对象属性包括:待比较对象属性名、待比较对象属性类型;所述待解析对象属性包括:待解析对象属性名、待解析对象属性类型;
将数据来源相同的待比较对象属性与待解析对象属性进行比较,确定差异信息,包括:
对于同一数据来源,在与该数据来源对应的待解析对象属性名中,判断与该数据来源对应的待比较对象属性名是否存在;若不存在,将不存在的待比较对象属性作为第一差异信息;若存在,
对于相同的对象属性名,判断待解析对象属性名的待解析对象属性类型与待比较对象属性名的待比较对象属性类型是否相同;将属性类型不相同的待比较对象属性和待解析对象属性作为第二差异信息;
以第一差异信息和第二差异信息共同作为差异信息。
5.根据权利要求4所述的方法,其特征在于,根据所述差异信息确定所述解析指令的解析结果,包括:
根据第一差异信息中的待比较对象属性信息,对所述待解析对象属性信息进行补充,以确定所述解析结果;以及,
根据第二差异信息中的待比较对象属性信息,对第二差异信息中的待解析对象属性信息进行修正,以确定所述解析结果。
6.根据权利要求5所述的方法,其特征在于,在根据所述差异信息确定所述解析指令的解析结果之后,还包括:
将所述差异信息进行展示提醒。
7.一种数据解析的装置,其特征在于,包括:
获取模块,用于获取解析指令;根据所述解析指令获取上一次解析结果以确定待比较数据信息,以及根据所述解析指令确定待解析数据信息;
比较模块,用于将所述待解析数据信息与所述待比较数据信息进行比较,确定差异信息;
确定结果模块,用于根据所述差异信息确定所述解析指令的解析结果。
8.一种数据解析的的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN201911229033.2A 2019-12-04 2019-12-04 一种数据解析的方法和装置 Pending CN112905182A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911229033.2A CN112905182A (zh) 2019-12-04 2019-12-04 一种数据解析的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911229033.2A CN112905182A (zh) 2019-12-04 2019-12-04 一种数据解析的方法和装置

Publications (1)

Publication Number Publication Date
CN112905182A true CN112905182A (zh) 2021-06-04

Family

ID=76111047

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911229033.2A Pending CN112905182A (zh) 2019-12-04 2019-12-04 一种数据解析的方法和装置

Country Status (1)

Country Link
CN (1) CN112905182A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100058295A1 (en) * 2008-09-02 2010-03-04 International Business Machines Corporation Dynamic Test Coverage
WO2014029098A1 (zh) * 2012-08-23 2014-02-27 华为技术有限公司 一种报文控制方法和装置
WO2016146008A1 (zh) * 2015-03-17 2016-09-22 阿里巴巴集团控股有限公司 数据解析方法、装置及系统
CN108616413A (zh) * 2016-12-13 2018-10-02 百度在线网络技术(北京)有限公司 信息校准方法和装置
CN108881172A (zh) * 2018-05-22 2018-11-23 阿里巴巴集团控股有限公司 报文的解析方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100058295A1 (en) * 2008-09-02 2010-03-04 International Business Machines Corporation Dynamic Test Coverage
WO2014029098A1 (zh) * 2012-08-23 2014-02-27 华为技术有限公司 一种报文控制方法和装置
WO2016146008A1 (zh) * 2015-03-17 2016-09-22 阿里巴巴集团控股有限公司 数据解析方法、装置及系统
CN108616413A (zh) * 2016-12-13 2018-10-02 百度在线网络技术(北京)有限公司 信息校准方法和装置
CN108881172A (zh) * 2018-05-22 2018-11-23 阿里巴巴集团控股有限公司 报文的解析方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
应凌云;杨轶;冯登国;苏璞睿;: "恶意软件网络协议的语法和行为语义分析方法", 软件学报, no. 07, 15 July 2011 (2011-07-15) *

Similar Documents

Publication Publication Date Title
CN110019350B (zh) 基于配置信息的数据查询方法和装置
CN107643984B (zh) 用于输出信息的方法和装置
CN110858172A (zh) 一种自动化测试代码生成方法和装置
CN111104479A (zh) 一种数据标注的方法及装置
CN111338944B (zh) 远程过程调用rpc接口测试方法、装置、介质及设备
CN109002389B (zh) 页面自动化测试的方法和装置
CN111666293A (zh) 数据库访问方法和装置
CN113760948A (zh) 一种数据查询的方法及装置
CN111125064A (zh) 一种生成数据库模式定义语句的方法和装置
CN110716956A (zh) 一种数据请求拦截方法和装置
CN112988583A (zh) 数据库语法兼容性测试的方法和装置
CN111107133A (zh) 差异包的生成方法、数据更新方法、装置和存储介质
CN108694172B (zh) 信息输出方法和装置
CN113656050B (zh) 用于生成版本号的方法和装置
CN113779004A (zh) 一种数据校验的方法和装置
CN112433713A (zh) 一种应用程序设计图处理方法和装置
CN116069725A (zh) 文件迁移方法、装置、设备、介质和程序产品
CN111767495A (zh) 一种合成网页的方法及系统
CN113076343B (zh) 数据查询方法、装置、设备及存储介质
CN110806967A (zh) 一种单元测试方法和装置
CN113742321B (zh) 一种数据更新的方法和装置
CN112905164B (zh) 一种项目代码处理方法和装置
CN112905182A (zh) 一种数据解析的方法和装置
CN108287792B (zh) 用于输出信息的方法和装置
CN113486116A (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