JSON文件差异化对比方法及装置与流程

文档序号:26101429发布日期:2021-07-30 18:12阅读:420来源:国知局
JSON文件差异化对比方法及装置与流程

本申请涉及数据处理技术领域,具体而言,涉及一种json文件差异化对比方法及装置。



背景技术:

json(javascriptobjectnotation,js对象简谱)是一种轻量级的数据交换格式。它基于ecmascript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。简洁和清晰的层次结构使得json成为目前广泛使用理想的数据交换格式。

目前在业务数据交互时主流采用json数据格式,在实际研发与测试工作中面临着频繁的回归测试、多版本测试、数据源切换测试以及多环境等场下交互业务数据测试验证工作,因此测试工作中存在大量业务交互数据对比工作(如:版本1与版本2业务交互数据是否一致)以确保业务的正确性。

目前现有技术或工具(如:beyondcompare或在线对比工具等)提供json文本比对,而这些技术或工具存在以下一些限制:

如直接对两个待比对文件(file1和file2)比较,未进行预先排序处理对比结果误判率高,最终结果仍需人为二次参识别及汇总,人为预先排序与二次结果识别不仅效率低同时存在一新误判率。需预先对两个待比对文件转换jsonobject对象,并按同一规则进行排序,在一定程序上提升了对比准确率及实际测试结果的识别效率,但最终结果仍需人为二次参识别及汇总,人为预先排序与二次结果识别不仅效率低同时存在误判率。

为提升json文件的对比效率,降低人为参与成本及误判率,急需提供一个无需预先排序且无需人为二次参与辨识的json文件差异化对比方法。



技术实现要素:

为了至少克服现有技术中的上述不足,本申请的目的在于提供一种json文件差异化对比方法及装置,用于解决上述技术问题。

第一方面,本申请实施例提供一种json文件差异化对比方法,所述方法应用于计算机设备,所述方法还包括:

格式规范检测步骤,检测待比对的第一测试样本文件与第二测试样本文件是否符合json格式规范;

文本转换步骤,在所述第一测试样本文件与所述第二测试样本文件符合json格式规范时,将所述第一测试样本文件与所述第二测试样本文件转换为jsonobject;

键查找步骤,按照顺序从所述第一测试样本文件中获取第一键值对的键,在所述第二测试样本文件中查找具有与所述第一键值对的键相等的第二键值对;

值对比步骤,在查找到与所述第一键值对的键相等的第二键值对时,将所述第一键值对的值与所述第二键值对的值进行比对,在所述第一键值对的值与所述第二键值对的值比对结束后,回到所述键查找步骤中获取所述第一测试样本文件中的下一个第一键值对的键,其中,在所述第一键值对的值与所述第二键值对的值不相同时,记录所述第一键值对的值与所述第二键值对的值不相同的信息;

重复键查找步骤及值对比步骤直到所述第一测试样本文件中的最后一个第一键值对,输出所述第一测试样本文件与所述第二测试样本文件差异化对比的比对结果,其中,所述比对结果包括所述第一键值对的值与所述第二键值对的值不相同的信息。

本申请提供的方案将第一测试样本文件与第二测试样本文件转换为jsonobject,通过遍历第一测试样本文件中的第一键值对的键并从第二测试样本文件中找到与第一键值的键相同的第二键值对,并通过对比第一键值对的值与第二键值对的值,得到第一测试样本文件与第二测试样本文件差异化对比的比对结果。上述方案可以减少对json测试样本文件的排序预操作,解决无序比对准确率低以及误判的技术问题;同时还无需人为二次参与比对结果的识别及统计工作,如此可以降低人为操作的误判风险提升工作效率;再者输出比对结果可以便于json测试样本文件比对差异的跟踪与回溯。

在一种可能的实现方式中,所述值对比步骤,包括:

在查找到与所述第一键值对的键相等的第二键值对时,根据所述第一键值对的值的数据类型,按照预先设定的类型对比规则将所述第一键值对的值与所述第二键值对的值进行比对。

在一种可能的实现方式中,在所述第一键值对的值的数据类型为jsonobject时,所述在查找到与所述第一键值对的键相等的第二键值对时,根据所述第一键值对的值的数据类型,按照预先设定的类型对比规则将所述第一键值对的值与所述第二键值对的值进行比对的步骤,包括:

判断所述第二键值对的值的数据类型和取值;

若所述第二键值对的值的取值为null,则记录本次比对中所述第一键值对与所述第二键值对之间的不相同的信息;

若所述第二键值对的值的数据类型不为jsonobject,则记录本次比对中所述第一键值对的值的数据类型与所述第二键值对的值的数据类型不同;

若所述第二键值对的值的数据类型为jsonobject,将所述第一键值对的值做为第一测试样本文件,所述第二键值对的值做为第二测试样本文件执行所述键查找步骤及所述值对比步骤,直到所述第一键值对的值完全遍历,并记录所述第一键值对的值与所述第二键值对的值之间的不相同的信息。

在一种可能的实现方式中,在所述第一键值对的值的数据类型为jsonarray时,所述在查找到与所述第一键值对的键相等的第二键值对时,根据所述第一键值对的值的数据类型,按照预先设定的类型对比规则将所述第一键值对的值与所述第二键值对的值进行比对的步骤,包括:

判断所述第二键值对的值的数据类型和取值;

若所述第二键值对的值的取值为null,则记录本次比对中所述第一键值对与所述第二键值对之间的不相同的信息;

若所述第二键值对的值的数据类型不为jsonarray,则记录本次比对中所述第一键值对的值的数据类型与所述第二键值对的值的数据类型不同;

若所述第二键值对的值的数据类型为jsonarray,则判断所述第一键值对的值的数组长度是否与所述第二键值对的值的数组长度一致,若数组长度不一致,则记录本次对比中所述第一键值对的值的数组长度与所述第二键值对的值的数组长度不一致;若数组长度一致,将所述第一键值对的值与所述第二键值对的值按照相同排序规则进行排序,依次获取所述第一键值对的值中的数组元素与所述第二键值对的值中的数组元素,并执行所述键查找步骤及所述值对比步骤,直到所述第一键值对的值中的数组元素与所述第二键值对的值中的数组元素对比完成,并记录所述第一键值对的值与所述第二键值对的值之间的不相同的信息。

在一种可能的实现方式中,在所述第一键值对的值的数据类型为字符串类型时,所述在查找到与所述第一键值对的键相等的第二键值对时,根据所述第一键值对的值的数据类型,按照预先设定的类型对比规则将所述第一键值对的值与所述第二键值对的值进行比对的步骤,包括:

判断所述第二键值对的值的数据类型;

若所述第二键值对的值的数据类型不为字符串类型,则记录本次比对中所述第一键值对的值的数据类型与所述第二键值对的值的数据类型不同;

若所述第二键值对的值的数据类型为字符串类型,比较所述第一键值对的值与所述第二键值对的值是否相等;

若所述第一键值对的值与所述第二键值对的值不相等,记录本次比对中所述第一键值的值对与所述第二键值对的值不相同;

若所述第一键值对的值与所述第二键值对的值相等,则不对本次比对结果进行记录。

在一种可能的实现方式中,所述方法还包括对所述比对结果进行分析的步骤,该步骤包括:

检测所述比对结果是否为空;

若所述比对结果为空,则分析所述第一测试样本文件与所述第二测试样本文件完全相同;

若所述比对结果不为空,则分析所述所述第一测试样本文件与所述第二测试样本文件存在差异内容,其中,所述比对结果中的内容即为所述差异内容。

第二方面,本申请实施例还提供一种json文件差异化对比装置,所述装置应用于计算机设备,所述装置还包括:

格式规范检测模块,用于检测待比对的第一测试样本文件与第二测试样本文件是否符合json格式规范;

文本转换模块,用于在所述第一测试样本文件与所述第二测试样本文件符合json格式规范时,将所述第一测试样本文件与所述第二测试样本文件转换为jsonobject;

键查找模块,用于按照顺序从所述第一测试样本文件中获取第一键值对的键,在所述第二测试样本文件中查找具有与所述第一键值对的键相等的第二键值对;

值对比模块,用于在查找到与所述第一键值对的键相等的第二键值对时,将所述第一键值对的值与所述第二键值对的值进行比对,在所述第一键值对的值与所述第二键值对的值比对结束后,执行所述键查找模块获取所述第一测试样本文件中的下一个第一键值对的键,其中,在所述第一键值对的值与所述第二键值对的值不相同时,记录所述第一键值对的值与所述第二键值对的值不相同的信息;

重复执行所述键查找模块及所述值对比模块的功能直到所述第一测试样本文件中的最后一个第一键值对,输出所述第一测试样本文件与所述第二测试样本文件差异化对比的比对结果,其中,所述比对结果包括所述第一键值对的值与所述第二键值对的值不相同的信息。

在一种可能的实现方式中,在所述第一键值对的值的数据类型为jsonobject时,所述值对比模块用于:

判断所述第二键值对的值的数据类型和取值;

若所述第二键值对的值的取值为null,则记录本次比对中所述第一键值对与所述第二键值对之间的不相同的信息;

若所述第二键值对的值的数据类型不为jsonobject,则记录本次比对中所述第一键值对的值的数据类型与所述第二键值对的值的数据类型不同;

若所述第二键值对的值的数据类型为jsonobject,将所述第一键值对的值做为第一测试样本文件,所述第二键值对的值做为第二测试样本文件执行所述键查找模块及所述值对比模块的功能,直到所述第一键值对的值完全遍历,并记录所述第一键值对的值与所述第二键值对的值之间的不相同的信息。

在一种可能的实现方式中,在所述第一键值对的值的数据类型为jsonarray时,所述值对比模块用于:

判断所述第二键值对的值的数据类型和取值;

若所述第二键值对的值的取值为null,则记录本次比对中所述第一键值对与所述第二键值对之间的不相同的信息;

若所述第二键值对的值的数据类型不为jsonarray,则记录本次比对中所述第一键值对的值的数据类型与所述第二键值对的值的数据类型不同;

若所述第二键值对的值的数据类型为jsonarray,则判断所述第一键值对的值的数组长度是否与所述第二键值对的值的数组长度一致,若数组长度不一致,则记录本次对比中所述第一键值对的值的数组长度与所述第二键值对的值的数组长度不一致;若数组长度一致,将所述第一键值对的值与所述第二键值对的值按照相同排序规则进行排序,依次获取所述第一键值对的值中的数组元素与所述第二键值对的值中的数组元素,并执行所述键查找模块及所述值对比模块的功能,直到所述第一键值对的值中的数组元素与所述第二键值对的值中的数组元素对比完成,并记录所述第一键值对的值与所述第二键值对的值之间的不相同的信息。

在一种可能的实现方式中,在所述第一键值对的值的数据类型为字符串类型时,所述值对比模块用于:

判断所述第二键值对的值的数据类型;

若所述第二键值对的值的数据类型不为字符串类型,则记录本次比对中所述第一键值对的值的数据类型与所述第二键值对的值的数据类型不同;

若所述第二键值对的值的数据类型为字符串类型,比较所述第一键值对的值与所述第二键值对的值是否相等;

若所述第一键值对的值与所述第二键值对的值不相等,记录本次比对中所述第一键值的值对与所述第二键值对的值不相同;

若所述第一键值对的值与所述第二键值对的值相等,则不对本次比对结果进行记录。

第三方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其被执行时,使得计算机执行上述第一方面或者第一方面中任意一个可能的实现方式中的json文件差异化对比方法。

基于上述任意一个方面,本申请实施例提供的json文件差异化对比方法及装置,将第一测试样本文件与第二测试样本文件转换为jsonobject,通过遍历第一测试样本文件中的第一键值对的键并从第二测试样本文件中找到与第一键值的键相同的第二键值对,并通过对比第一键值对的值与第二键值对的值,得到第一测试样本文件与第二测试样本文件差异化对比的比对结果。上述方案可以减少对json测试样本文件的排序预操作,解决无序比对准确率低以及误判的技术问题;同时还无需人为二次参与比对结果的识别及统计工作,如此可以降低人为操作的误判风险提升工作效率;再者输出比对结果可以便于json测试样本文件比对差异的跟踪与回溯;另外,相对现有技术遍历次数少(只需要一次遍历)可以降低对比过程对计算资源的占用,提高文本对比的速度。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要调用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。

图1为本申请实施例提供的json文件差异化对比方法的流程示意图;

图2为本申请实施例提供的json文件差异化对比装置功能模块示意图;

图3为本申请实施例提供的计算机设备的硬件结构示意图。

具体实施方式

下面结合说明书附图对本申请进行具体说明,方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。

在现有技术中,存在很多文本比较工具,比如beyondcompare以及一些在线的对比工具等等。现有技术的技术方案中,对于json文本的比对来说,分为对文本解析和不解析两种情况:第一,使用文本方式逐行读取file1、file2内容,按照行内容进行文本比较,将不相同的字(多字)、行(多行)以颜色块在file1、file2中标注差异;第二,解析file1、file2json文本,分别对解析后的file1、file2获取的key和value进行比较,将不相同的内容用以不种颜色块标记(不同颜色标记差异不同类型)。

现有技术中至少存在如下技术问题:第一、无法解决乱序比较误判率高问题(例如,无法将“名称/值”一致,但“名称/值”与其他“名称/值”顺序不一致的json文本进行比较);最终结果需要人为二次参与辩别与汇总,工作量大,存在人为误判风险。第二、最终结果需要人为二次参与辩别与汇总,工作量大,存在人为误判风险。

为了解决上述技术问题,现有技术提供以下一种json文本的比对方法和装置,该技术通过增加比对文本的配置信息,用户可以根据不同需求自定义不需要对比对的文本属性,在一定程度上提高了比对的效率;另外,在比对的过程中,由于对json文本中的数组结构按照设定规则进行了排序,因而能够对两个无序的json文本及json中无序的array进行比较,解决了无法将文本中名称/值一致,但名称/值与其他名称/值顺序不一致的json文本无法进行比较的问题,因而在一定程度上提高了比对的准确率。在上述方案中,需要遍历两个对比文本,并生成两个对比文本的二叉树文本,并根据二叉树文本生成对应的键值对文本,最后基于键值对文本进行差异比对。在上述过程中至少需要三次遍历(第一次形成二叉树文本,第二次形成键值对文本及第三次形成最终对比结果)所需的计算资源较多,同时计算量较大会影响文本对比的速度。

为了克服上述现有技术方案中的不足,发明人提供以下解决方案,请参照图1,图1为本申请实施例提供的json文件差异化对比方法的流程示意图,本实施例提供的json文件差异化对比方法可以由计算机设备执行,下面结合图1对该json文件差异化对比方法的流程步骤进行详尽说明。

步骤s11,检测待比对的第一测试样本文件与第二测试样本文件是否符合json格式规范。

可以采用json格式检测程序对待比对的第一测试样本文件与第二测试样本文件进行格式规范检测,在本步骤中,第一测试样本文件为符合json格式规范的基准样本文件,在检测到第二测试样本文件不满足json格式规范,进入步骤s15结束测试样本对比,并输出比对结果,比对结果可以是“第二测试样本文件不符合json格式规范”。在检测待比对的第一测试样本文件与第二测试样本文件符合json格式规范时进入步骤s12。

步骤s12,将第一测试样本文件与第二测试样本文件转换为jsonobject。

在第一测试样本文件与第二测试样本文件符合json格式规范时,可以通过jsonobject格式转换程序将第一测试样本文件与第二测试样本文件转换为jsonobject,同时可以输出格式转换成功的提示信息。

步骤s13,按照顺序从第一测试样本文件中获取第一键值对的键,在第二测试样本文件中查找是否存在具有与第一键值对的键相等的第二键值对。

在第二测试样本文件未查找到与第一键值对的键相等的第二键值对时,输出比对结果,重新执行步骤s13,从第一测试样本文件中获取下一个第一键值对的键。在查找到具有相同键(key)的第二键值对之后,进入步骤s14。

步骤s14,将第一键值对的值value1与所述第二键值对的值value2进行比对,在第一键值对的值value1与第二键值对的值value2比对结束后,判断第一键值对是否为第一测试样本文件的最后一个键值对,若不是回到步骤s13获取第一测试样本文件中的下一个第一键值对的键;若是,进入步骤s15,结束试样本文件比对,输出比对结果,其中,比对结果中了第一键值对的值value1与第二键值对的值value2不相同的信息。

步骤s14根据第一键值对的值value1的数据类型,按照预先设定的类型对比规则进行比对。

在本申请实施例中,键值对的值value的数据类型包括jsonobject、jsonarray及字符串类型(string)。

在本申请实施例中,根据键值对的值value的数据类型不同,步骤s14采用不同的对比规则进行对比。

在第一键值对的值value1的数据类型为jsonobject时,步骤s14可以采用以下方式实现。

首先,判断第二键值对的值value2的数据类型和取值。

接着,若第二键值对的值value2的取值为null,则记录本次比对中第一键值对与所述第二键值对之间的不相同的信息。记录的结果样例可以是第一测试样本文件存在键key1及值value1,第二测试样本文件不存在键key2。

若第二键值对的值value2的数据类型不为jsonobject,则记录本次比对中第一键值对的值value1的数据类型与所述第二键值对的值value2的数据类型不同。记录的结果样例可以是第一测试样本文件存在键key1及值value1,第二测试样本文件存在键key2及值value2,但值value1与值value2不同。

若所述第二键值对的值的数据类型为jsonobject,将所述第一键值对的值value1做为第一测试样本文件,所述第二键值对的值value2做为第二测试样本文件执行步骤s13及步骤s14,直到所述第一键值对的值value1中元素完全遍历,并记录所述第一键值对的值value1与所述第二键值对的值value2之间的不相同的信息。

在第一键值对的值value1的数据类型为jsonarray时,步骤s14可以采用以下方式实现。

首先,判断所述第二键值对的值value2的数据类型和取值;

接着,若所述第二键值对的值value2的取值为null,则记录本次比对中所述第一键值对与所述第二键值对之间的不相同的信息。记录的结果样例可以是第一测试样本文件存在键key1及值value1,第二测试样本文件不存在键key2。

若所述第二键值对的值value1的数据类型不为jsonarray,则记录本次比对中所述第一键值对的值value1的数据类型与所述第二键值对的值value1的数据类型不同。记录的结果样例可以是第一测试样本文件存在键key1及值value1,第二测试样本文件存在键key2及值value2,但值value1与值value2不同。

若所述第二键值对的值value2的数据类型为jsonarray,则判断所述第一键值对的值value1的数组长度是否与所述第二键值对的值value2的数组长度一致,若数组长度不一致,则记录本次对比中所述第一键值对的值value1的数组长度与所述第二键值对的值value2的数组长度不一致;若数组长度一致,将所述第一键值对的值value1与所述第二键值对的值value2按照相同排序规则进行排序,依次获取所述第一键值对的值value1中的数组元素与所述第二键值对的值value2中的数组元素,并执行所述步骤s13及步骤s14,直到所述第一键值对的值value1中的数组元素与所述第二键值对的值value2中的数组元素对比完成,并记录所述第一键值对的值value1与所述第二键值对的值value2之间的不相同的信息。

在键值对的值的数据类型为jsonarray时,本申请实施例提供的技术方案可以根据数组的长短差异准确输出差异,相比于现有技术在差异结果输出方面更加精准。

在第一键值对的值value1的数据类型为字符串类型时,步骤s14可以采用以下方式实现。

首先,判断所述第二键值对的值value2的数据类型。

接着,若所述第二键值对的值value2的数据类型不为字符串类型,则记录本次比对中所述第一键值对的值value1的数据类型与所述第二键值对的值value2的数据类型不同。

若所述第二键值对的值value2的数据类型为字符串类型,比较所述第一键值对的值value1与所述第二键值对的值value2是否相等;若所述第一键值对的值value1与所述第二键值对的值value2不相等,记录本次比对中所述第一键值的值value1与所述第二键值对的值value2不相同;若所述第一键值对的值value1与所述第二键值对的值value2相等,则不对本次比对结果进行记录。

上述提供的方案,将第一测试样本文件与第二测试样本文件转换jsonobject文件,通过遍历第一测试样本文件中的第一键值对的键并从第二测试样本文件中找到与第一键值的键相同的第二键值对,并通过对比第一键值对的值与第二键值对的值,得到第一测试样本文件与第二测试样本文件差异化对比的比对结果。上述方案可以减少对json测试样本文件的排序预操作,解决无序比对准确率低以及误判的技术问题;同时还无需人为二次参与比对结果的识别及统计工作,如此可以降低人为操作的误判风险提升工作效率;再者输出比对结果可以便于json测试样本文件比对差异的跟踪与回溯;另外,相对现有技术遍历次数少(只需要一次遍历)可以降低对比过程对计算资源的占用,提高文本对比的速度。

本申请实施例提供的json文件差异化对比方法还可以包括对比对结果进行分析的步骤。

检测所述比对结果是否为空;

若所述比对结果为空,则分析所述第一测试样本文件与所述第二测试样本文件完全相同;若所述比对结果不为空,则分析所述所述第一测试样本文件与所述第二测试样本文件存在差异内容,其中,所述比对结果中的内容即为所述差异内容。

请参照图2,图2为本公开实施例提供的json文件差异化对比装置的功能模块示意图,本实施例可以根据计算机设备执行的方法实施例对json文件差异化对比装置30进行功能模块的划分,也即该json文件差异化对比装置30所对应的以下各个功能模块可以用于执行上述计算机设备执行的各个方法实施例。其中,该基于json文件差异化对比装置30可以包括格式规范检测模块31、文本转换模块32、键查找模块33及值对比模块34,下面分别对该json文件差异化对比装置30的各个功能模块的功能进行详细阐述。

格式规范检测模块31,用于检测待比对的第一测试样本文件与第二测试样本文件是否符合json格式规范。

格式规范检测模块31对待比对的第一测试样本文件与第二测试样本文件进行格式规范检测,在本申请实施例中,第一测试样本文件为符合json格式规范的基准样本文件,在检测到第二测试样本文件不满足json格式规范,结束测试样本对比,并输出比对结果,比对结果可以是“第二测试样本文件不符合json格式规范”。

文本转换模块32,用于在所述第一测试样本文件与所述第二测试样本文件符合json格式规范时,将所述第一测试样本文件与所述第二测试样本文件转换为jsonobject。

在第一测试样本文件与第二测试样本文件符合json格式规范时,文本转换模块32可以通过jsonobject格式转换程序将第一测试样本文件与第二测试样本文件转换为jsonobject,同时可以输出格式转换成功的提示信息。

键查找模块33,用于按照顺序从所述第一测试样本文件中获取第一键值对的键,在所述第二测试样本文件中查找是否存在具有与所述第一键值对的键相等的第二键值对。

在第二测试样本文件未查找到与第一键值对的键相等的第二键值对时,输出比对结果,从第一测试样本文件中获取下一个第一键值对的键,并在述第二测试样本文件中查找是否存在具有与该下一个第一键值对的键相等的第二键值对。

值对比模块34,用于将所述第一键值对的值与所述第二键值对的值进行比对,在所述第一键值对的值与所述第二键值对的值比对结束后,执行所述键查找模块获取所述第一测试样本文件中的下一个第一键值对的键,其中,在所述第一键值对的值与所述第二键值对的值不相同时,记录所述第一键值对的值与所述第二键值对的值不相同的信息。

重复执行所述键查找模块33及所述值对比模块34的功能直到所述第一测试样本文件中的最后一个第一键值对,输出所述第一测试样本文件与所述第二测试样本文件差异化对比的比对结果,其中,所述比对结果包括所述第一键值对的值与所述第二键值对的值不相同的信息。

在本申请实施例中,值对比模块34根据第一键值对的值value1的数据类型,按照预先设定的类型对比规则进行比对。

在本申请实施例中,键值对的值value的数据类型包括jsonobject、jsonarray及字符串类型(string)。

在第一键值对的值value1的数据类型为jsonobject时,值对比模块34用于:

首先,判断第二键值对的值value2的数据类型和取值;

接着,若第二键值对的值value2的取值为null,则记录本次比对中第一键值对与所述第二键值对之间的不相同的信息。记录的结果样例可以是第一测试样本文件存在键key1及值value1,第二测试样本文件不存在键key2;

若第二键值对的值value2的数据类型不为jsonobject,则记录本次比对中第一键值对的值value1的数据类型与所述第二键值对的值value2的数据类型不同。记录的结果样例可以是第一测试样本文件存在键key1及值value1,第二测试样本文件存在键key2及值value2,但值value1与值value2不同;

若所述第二键值对的值的数据类型为jsonobject,将所述第一键值对的值value1做为第一测试样本文件,所述第二键值对的值value2做为第二测试样本文件并执行所述键查找模块33及所述值对比模块34的功能,直到所述第一键值对的值value1中元素完全遍历,并记录所述第一键值对的值value1与所述第二键值对的值value2之间的不相同的信息。

在第一键值对的值value1的数据类型为jsonarray时,值对比模块34用于:

首先,判断所述第二键值对的值value2的数据类型和取值;

接着,若所述第二键值对的值value2的取值为null,则记录本次比对中所述第一键值对与所述第二键值对之间的不相同的信息。记录的结果样例可以是第一测试样本文件存在键key1及值value1,第二测试样本文件不存在键key2;

若所述第二键值对的值value1的数据类型不为jsonarray,则记录本次比对中所述第一键值对的值value1的数据类型与所述第二键值对的值value1的数据类型不同。记录的结果样例可以是第一测试样本文件存在键key1及值value1,第二测试样本文件存在键key2及值value2,但值value1与值value2不同;

若所述第二键值对的值value2的数据类型为jsonarray,则判断所述第一键值对的值value1的数组长度是否与所述第二键值对的值value2的数组长度一致,若数组长度不一致,则记录本次对比中所述第一键值对的值value1的数组长度与所述第二键值对的值value2的数组长度不一致;若数组长度一致,将所述第一键值对的值value1与所述第二键值对的值value2按照相同排序规则进行排序,依次获取所述第一键值对的值value1中的数组元素与所述第二键值对的值value2中的数组元素,并执行所述键查找模块33及所述值对比模块34的功能,直到所述第一键值对的值value1中的数组元素与所述第二键值对的值value2中的数组元素对比完成,并记录所述第一键值对的值value1与所述第二键值对的值value2之间的不相同的信息。

在键值对的值的数据类型为jsonarray时,本申请实施例提供的技术方案可以根据数组的长短差异准确输出差异,相比于现有技术在差异结果输出方面更加精准。

在第一键值对的值value1的数据类型为字符串类型时,值对比模块34用于:

首先,判断所述第二键值对的值value2的数据类型;

接着,若所述第二键值对的值value2的数据类型不为字符串类型,则记录本次比对中所述第一键值对的值value1的数据类型与所述第二键值对的值value2的数据类型不同;

若所述第二键值对的值value2的数据类型为字符串类型,比较所述第一键值对的值value1与所述第二键值对的值value2是否相等;若所述第一键值对的值value1与所述第二键值对的值value2不相等,记录本次比对中所述第一键值的值value1与所述第二键值对的值value2不相同;若所述第一键值对的值value1与所述第二键值对的值value2相等,则不对本次比对结果进行记录。

需要说明的是,应理解以上装置或系统中的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以在物理上分开。且这些模块可以全部以软件(比如,开源软件)可以通过处理器调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理器调用软件的形式实现,部分模块通过硬件的形式实现。例如,值对比模块34可以由单独处理器运行实现,例如,可以以程序代码的形式存储于上述装置或系统的存储器中,由上述装置或系统的某一个处理器调用并执行以上值对比模块34的功能,其它模块的实现与之类似,在此就不再赘述。此外这些模块可以全部或部分集成在一起,也可以独立实现。这里所描述的处理器可以是一种具有信号的处理能力的集成电路,在实现过程中,上述技术方案中的各步骤或各个模块可以通过处理器中的集成逻辑电路或者执行软件程序的形式完成。

请参照图3,图3示出了本公开实施例提供的用于实现上述的json文件差异化对比方法的计算机设备10的硬件结构示意图,计算机设备10可以在云端服务器上实现。如图3所示,计算机设备10可包括处理器11、计算机可读存储介质12、总线13以及通信单元14。

在具体实现过程中,至少一个处理器11执行计算机可读存储介质12存储的计算机执行指令(例如图2中所示的json文件差异化对比装置30中包括的各个模块),使得处理器11可以执行如上方法实施例的json文件差异化对比方法,其中,处理器11、计算机可读存储介质12以及通信单元14通过总线13连接,处理器11可以用于控制通信单元14的收发动作。

处理器11的具体实现过程可参见上述计算机设备10执行的各个方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

计算机可读存储介质12可能包含随机存取存储器,也可能还包括非易失性存储,例如至少一个磁盘存储器。

总线13可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。

此外,本申请实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上json文件差异化对比方法。

综上所述,本申请实施例提供的的json文件差异化对比方法及装置,将第一测试样本文件与第二测试样本文件转换为jsonobject,通过遍历第一测试样本文件中的第一键值对的键并从第二测试样本文件中找到与第一键值的键相同的第二键值对,并通过对比第一键值对的值与第二键值对的值,得到第一测试样本文件与第二测试样本文件差异化对比的比对结果。上述方案可以减少对json测试样本文件的排序预操作,解决无序比对准确率低以及误判的技术问题;同时还无需人为二次参与比对结果的识别及统计工作,如此可以降低人为操作的误判风险提升工作效率;再者输出比对结果可以便于json测试样本文件比对差异的跟踪与回溯。

以上所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。通常在附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,在附图中提供的本申请的实施例的详细描述并非旨在限制本申请的保护范围,而仅仅是表示本申请的选定实施例。基于此,本申请的保护范围应以权利要求的保护范围为准。此外,基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下可获得的所有其它实施例,都应属于本申请保护的范围。

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