一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

JSON文本的比对方法及装置与流程

2021-10-24 08:30:00 来源:中国专利 TAG:比对 装置 文本 方法 数据处理

json文本的比对方法及装置
技术领域
1.本技术涉及数据处理技术领域,尤其涉及一种json文本的比对方法及装置。


背景技术:

2.json(javascript object notation)是一种轻量级的数据交换格式,在服务端测试过程中经常需要对返回的json报文进行比对,以便于找出其中的差异,判断服务端返回的json报文中的内容是否符合预期。
3.现有的比对json报文的方案主要有两种,第一种是依靠人工肉眼对比两个json报文;第二种是使用其他已公开的网页比对工具,比如站长工具对json报文进行比对。但是,json报文中的键值对是无序的,服务端每次接收的json报文中的键值对顺序都会改变,键值对顺序改变后的两个son字符串实质是相同的。由于站长工具只能对文本进行对比,如果两个json报文中的键值对顺序发生改变,站长工具返回与实际对比结论不一致的错误的对比结果。


技术实现要素:

4.针对现有技术中的问题,本技术提出了一种json文本的比对方法及装置,能够提高json文本比对的准确性。
5.为了解决上述技术问题,本技术提供以下技术方案:
6.第一方面,本技术提供一种json文本的比对方法,包括:
7.获取第一json报文和第二json报文;
8.将第一json报文转化为linkedhashmap类型的第一报文,并将第二json报文转化为linkedhashmap类型的第二报文;
9.根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集;
10.根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出。
11.进一步地,所述根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集,包括:
12.根据所述第一报文中的键值对和该键值对中的值的数据类型,生成第一解析结果集;
13.根据所述第二报文中的键值对和该键值对中的值的数据类型,生成第二解析结果集。
14.进一步地,所述根据所述第一报文中的键值对和该键值对中的值的数据类型,生成第一解析结果集,包括:
15.将所述第一报文作为目标报文,将第一报文中的首位的键值对作为目标键值对,执行遍历步骤,该遍历步骤包括:若所述目标键值对中的值符合第一判断条件或者第二判断条件,则将所述目标报文的json路径和目标键值对中的键组成当前json路径,将所述目标键值对的值作为当前json路径对应的值,加入第一解析结果集;
16.若所述目标报文存在下一位的键值对,则将该下一位的键值对作为新的目标键值对,目标报文保持不变,返回执行所述遍历步骤;
17.若所述目标报文不存在下一位的键值对、该目标报文与第一报文不同并且第一报文存在下一位的键值对,则将所述第一报文的下一位的键值对作为目标键值对,第一报文作为目标报文,返回执行所述遍历步骤;
18.若所述目标报文不存在下一位的键值对、该目标报文与第一报文不同并且第一报文不存在下一位的键值对,则中止当前操作;
19.若所述目标报文为第一报文并且不存在下一位的键值对,则中止当前操作;
20.所述第一判断条件为所述目标键值对的值不是map类型并且不是列表类型;所述第二判断条件为所述目标键值对的值为列表类型并且列表中的子元素不是map类型。
21.进一步地,所述根据所述第二报文中的键值对和该键值对中的值的数据类型,生成第二解析结果集,包括:
22.将所述第二报文作为目标报文,将第二报文中的首位的键值对作为目标键值对,执行遍历步骤,该遍历步骤包括:若所述目标键值对中的值符合第一判断条件或者第二判断条件,则将所述目标报文的json路径和目标键值对中的键组成当前json路径,将所述目标键值对的值作为当前json路径对应的值,加入第二解析结果集;
23.若所述目标报文存在下一位的键值对,则将该下一位的键值对作为新的目标键值对,目标报文保持不变,返回执行所述遍历步骤;
24.若所述目标报文不存在下一位的键值对、该目标报文与第二报文不同并且第二报文存在下一位的键值对,则将所述第二报文的下一位的键值对作为目标键值对,第二报文作为目标报文,返回执行所述遍历步骤;
25.若所述目标报文不存在下一位的键值对、该目标报文与第二报文不同并且第二报文不存在下一位的键值对,则中止当前操作;
26.若所述目标报文为第二报文并且不存在下一位的键值对,则中止当前操作;
27.所述第一判断条件为所述目标键值对的值不是map类型并且不是列表类型;所述第二判断条件为所述目标键值对的值为列表类型并且列表中的子元素不是map类型。
28.进一步地,所述遍历步骤,还包括:
29.若所述目标键值对的值为map类型,则将所述目标键值对的值转化成linkedhashmap类型后作为新的目标报文,将目标报文的json路径和目标键值对中的键组成新的目标报文的json路径,将新的目标报文中首位的键值对作为新的目标键值对,返回执行所述遍历步骤。
30.进一步地,所述遍历步骤,还包括:
31.若所述目标键值对的值为列表类型并且列表中的子元素为map类型,则将所述子元素转化成linkedhashmap类型后作为新的目标报文,将目标报文的json路径和目标键值对中的键组成新的目标报文的json路径,将新的目标报文中首位的键值对作为新的目标键值对,返回执行所述遍历步骤。
32.进一步地,所述根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出,包括:
33.根据所述第一解析结果集和第二解析结果集中的当前json路径和值,生成比对结
果列表并输出。
34.第二方面,本技术提供一种json文本的比对装置,包括:
35.获取模块,用于获取第一json报文和第二json报文;
36.转化模块,用于将第一json报文转化为linkedhashmap类型的第一报文,并将第二json报文转化为linkedhashmap类型的第二报文;
37.生成模块,用于根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集;
38.比对模块,用于根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出。
39.第三方面,本技术提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的json文本的比对方法。
40.第四方面,本技术提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述的json文本的比对方法。
41.由上述技术方案可知,本技术提供一种json文本的比对方法及装置。其中,该方法包括:获取第一json报文和第二json报文;将第一json报文转化为linkedhashmap类型的第一报文,并将第二json报文转化为linkedhashmap类型的第二报文;根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集;根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出,能够提高json文本比对的准确性;具体地,能够支持复杂多层的json报文的比对,提高报文比对的准确性,节省人力成本,并且可以明确各个值对应的详细路径,便于接下来异常分析等;同时,还能够提高报文比对的效率。
附图说明
42.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1是本技术实施例中json文本的比对方法的流程示意图;
44.图2是本技术实施例中json文本的比对方法的步骤311至步骤315的流程示意图;
45.图3是本技术一种举例中的客户端与服务器之间的关系示意图;
46.图4是本技术一种举例中的json树示意图;
47.图5是本技术另一种举例中的json树示意图;
48.图6是本技术实施例中json文本的比对装置的结构示意图;
49.图7为本技术实施例的电子设备的系统构成示意框图。
具体实施方式
50.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普
通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
51.为了解决上述现有技术中存在的问题,本方案考虑从改变现有的json文本的比对方式入手,提供一种基于json报文的比对方法及装置,可以适用于多种编程语言,支持复杂结构的json报文的比对,可以将json报文中键值对的顺序与客户端发送的顺序统一,可以基于递归方法从深度、广度解析报文,解析结果集中的当前json路径包含有对应值处于原始json报文中的完整路径,可以基于解析结果集回溯出整个原始json报文,对比结果可以复用于json报文差异的可视化展示;生成解析结果集的方式并非唯一,亦可通过其它算法得到同样或相似解析结果集。
52.需要说明的是,本技术公开的json文本的比对方法及装置可用于金融技术领域,也可用于除金融技术领域之外的任意领域,本技术公开的json文本的比对方法及装置的应用领域不做限定。
53.具体通过下述各个实施例进行说明。
54.为了提高json文本比对的准确性,本实施例提供一种执行主体是json文本的比对装置的json文本的比对方法,该json文本的比对装置包括但不限于服务器,如图1所示,该方法具体包含有如下内容:
55.步骤100:获取第一json报文和第二json报文。
56.具体地,所述第一json报文和第二json报文可以是前端页面发送的两个json报文。
57.步骤200:将第一json报文转化为linkedhashmap类型的第一报文,并将第二json报文转化为linkedhashmap类型的第二报文。
58.具体地,将传入的json报文转换为linkedhashmap类型,可以保证转换后的报文中键值对的顺序与前端发送的该转换后的报文对应json报文的键值对的顺序相同,可以避免由于json报文键值对顺序发生改变,导致对比结果错误,方便使用人员按原始报文顺序查看解析结果;进一步地,在步骤200之前,可以应用fastjson库尝试将json报文强制转换为json对象类型,若强制转换失败,则应用正则表达式,将json报文格式化为标准json格式,将以标准json格式的json报文转换为json对象类型,提高格式化的成功率,进而提高json文本比对的准确性,json报文可以是第一json报文,也可以是第二json报文。
59.举例来说,正则表达式:emptyvaluereg=":\\s*([{]{1})\\s*:\\s*([}]{1})";表示若json报文中只存在一个大括号并且大括号内仅包含有一个冒号,则该json报文标准化后将大括号里面的冒号去除。正则表达式:fillvaluereg="([a

za

z$\u4e00

\u9fa5_]{1}[\\w$\u4e00

\u9fa5]*)\\s*:\\s*([^\\[\\],{}'\"] )";表示匹配通用键值对,若键值对中的值不存在单引号和双引号,则json报文标准化后给value添加单引号或双引号。
[0060]
步骤300:根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集。
[0061]
可以理解的是,若第一报文为空,则生成空的第一解析结果集;若第二报文为空,则生成空的第二解析结果集。所述第一解析结果集可以包含有:第一报文对应的各个当前json路径及其各自对应的值;所述第二解析结果集可以包含有:第二报文对应的各个当前json路径及其各自对应的值。
[0062]
步骤400:根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出。
[0063]
为了进一步提高json报文比对的准确性,在本技术一个实施例中,步骤300包括:
[0064]
步骤310:根据所述第一报文中的键值对和该键值对中的值的数据类型,生成第一解析结果集。
[0065]
具体地,所述键值对中的值的数据类型可以是map类型、列表类型、字符串、数值和布尔型等。
[0066]
步骤320:根据所述第二报文中的键值对和该键值对中的值的数据类型,生成第二解析结果集。
[0067]
在现有技术中,当接口返回json参数和层级很多时,依靠人工肉眼对比将会耗费大量的时间,而且容易遗漏,对比结果的准确性不高,基于此,为了实现复杂多层的json报文对比,参见图2,在本技术一个实施例中,步骤310包括:
[0068]
步骤311:将所述第一报文作为目标报文,将第一报文中的首位的键值对作为目标键值对,执行遍历步骤,该遍历步骤包括:若所述目标键值对中的值符合第一判断条件或者第二判断条件,则将所述目标报文的json路径和目标键值对中的键组成当前json路径,将所述目标键值对的值作为当前json路径对应的值,加入第一解析结果集。
[0069]
具体地,第一报文的json路径可以为空字符串;若当前json路径包含有多个键,则各键之间可以以分隔符隔开,如“.”或“:”等。第一报文可以包含有多个子元素,可以将每个子元素作为一组键值对;举例来说,如表1所示,表1中的报文包含有4个子元素。
[0070]
表1
[0071][0072]
步骤312:若所述目标报文存在下一位的键值对,则将该下一位的键值对作为新的目标键值对,目标报文保持不变,返回执行所述遍历步骤。
[0073]
步骤313:若所述目标报文不存在下一位的键值对、该目标报文与第一报文不同并且第一报文存在下一位的键值对,则将所述第一报文的下一位的键值对作为目标键值对,第一报文作为目标报文,返回执行所述遍历步骤。
[0074]
具体地,若目标报文与第一报文不同,可以根据目标报文的json路径,确定第一报文是否存在下一位的键值对,举例来说,如表1所示,若目标报文为{"sub_map_item":"empty"},目标报文的json路径为:list_3[0].sub_map_item,根据list_3[0]可以确定第一
报文存在list_3[0]对应的下一位的键,因此,第一报文存在下一位的键值对:"user_info":{"name":"big_cat","age":25,"is_marry":false,"wife":null}。
[0075]
步骤314:若所述目标报文不存在下一位的键值对、该目标报文与第一报文不同并且第一报文不存在下一位的键值对,则中止当前操作。
[0076]
步骤315:若所述目标报文为第一报文并且不存在下一位的键值对,则中止当前操作;所述第一判断条件为所述目标键值对的值不是map类型并且不是列表类型;所述第二判断条件为所述目标键值对的值为列表类型并且列表中的子元素不是map类型。
[0077]
可以理解的是,若中止当前操作可以表示得到最终的第一解析结果集。
[0078]
为了实现复杂多层的报文对比,进一步提高json报文比对的准确性,在本技术一个实施例中,步骤320包括:
[0079]
步骤321:将所述第二报文作为目标报文,将第二报文中的首位的键值对作为目标键值对,执行遍历步骤,该遍历步骤包括:若所述目标键值对中的值符合第一判断条件或者第二判断条件,则将所述目标报文的json路径和目标键值对中的键组成当前json路径,将所述目标键值对的值作为当前json路径对应的值,加入第二解析结果集。
[0080]
步骤322:若所述目标报文存在下一位的键值对,则将该下一位的键值对作为新的目标键值对,目标报文保持不变,返回执行所述遍历步骤。
[0081]
步骤323:若所述目标报文不存在下一位的键值对、该目标报文与第二报文不同并且第二报文存在下一位的键值对,则将所述第二报文的下一位的键值对作为目标键值对,第二报文作为目标报文,返回执行所述遍历步骤。
[0082]
步骤314:若所述目标报文不存在下一位的键值对、该目标报文与第二报文不同并且第二报文不存在下一位的键值对,则中止当前操作。
[0083]
步骤325:若所述目标报文为第二报文并且不存在下一位的键值对,则中止当前操作;所述第一判断条件为所述目标键值对的值不是map类型并且不是列表类型;所述第二判断条件为所述目标键值对的值为列表类型并且列表中的子元素不是map类型。
[0084]
为了进一步提高json报文比对的准确性,在本技术一个实施例中,步骤311或步骤321中的遍历步骤,还包括:
[0085]
若所述目标键值对的值为map类型,则将所述目标键值对的值转化成linkedhashmap类型后作为新的目标报文,将目标报文的json路径和目标键值对中的键组成新的目标报文的json路径,将新的目标报文中首位的键值对作为新的目标键值对,返回执行所述遍历步骤。
[0086]
举例来说,如表1所示,"user_info":{"name":"big_cat","age":25,"is_marry":false,"wife":null}表示值为map类型的键值对。
[0087]
为了进一步提高json报文比对的准确性,在本技术一个实施例中,步骤311或步骤321中的遍历步骤,还包括:
[0088]
若所述目标键值对的值为列表类型并且列表中的子元素为map类型,则将所述子元素转化成linkedhashmap类型后作为新的目标报文,将目标报文的json路径和目标键值对中的键组成新的目标报文的json路径,将新的目标报文中首位的键值对作为新的目标键值对,返回执行所述遍历步骤。
[0089]
举例来说,如表1所示,"list_3":[{"sub_map_item":"empty"}]可以表示值为列
表类型并且列表中的子元素为map类型的键值对。
[0090]
为了进一步提高比对结果列表的可靠性,在本技术一个实施例中,步骤400包含有:根据所述第一解析结果集和第二解析结果集中的当前json路径和值,生成比对结果列表并输出。
[0091]
在一种举例中,生成第一解析结果集或第二解析结果集的过程如下所示,若本举例中的原始json报文表示第一json报文,则解析结果集可以表示第一解析结果集;若原始json报文表示第二json报文,则解析结果集可以表示第二解析结果集;具体描述如下:
[0092]
步骤001:接收原始json报文和原始json报文,原始json报文的json路径可以用空字符串""表示,原始json报文可以如表1所示。
[0093]
具体地,如图3所示,服务器和客户端之间通信连接,服务器可以接收客户端发送的原始json报文,并将原始json报文对应的报文比对结果列表返回至客户端。
[0094]
步骤002:将原始json报文转换为linkedhashmap类型的map报文;然后遍历map报文中的子元素(key:value),报文中的子元素可以相当于上述报文中的键值对,报文中的键key有list_1、list_2、list_3和user_info。
[0095]
步骤003:遍历第1个子元素("list_1":[]),其中,键key为list_1,值value为[]。由于value是list类型并且大小为0,将原始json报文的json路径"" list_1作为当前json路径,[]作为value存入解析结果集。
[0096]
步骤004:遍历第2个子元素("list_2":[1,2,3]),其中,key为list_2、value为[1,2,3];由于value是list类型,并且list_2的子元素的类型不为map类型,将原始json报文的json路径"" list_2作为当前json路径,[1,2,3]作为value存入解析结果集。
[0097]
步骤005:遍历第3个子元素("list_3":[{...}]),其中,key为list_3,value为[{...}];由于value是list类型,并且list_3的子元素的类型为map类型;遍历list_3的第1个子元素{"sub_map_item":"empty"},将原始json报文的json路径"" list_3 第1个子元素的下标0 '.'=list_3[0].作为新的报文对应的json路径,{"sub_map_item":"empty"}作为list_3[0].对应的新的报文。
[0098]
步骤006:将报文{"sub_map_item":"empty"}转换为linkedhashmap类型的map报文;然后遍历map报文的子元素("sub_map_item":"empty");由于("sub_map_item":"empty")中的value是字符串类型,将list_3[0]. sub_map_item=list_3[0].sub_map_item作为当前json路径、"empty"作为value存入解析结果集。至此,list_3遍历完毕。
[0099]
步骤007:遍历第4个子元素("user_info":{...}),其中,key为user_info,value为{...}。
[0100]
步骤008:由于第4个子元素的value是map类型;将value转换为linkedhashmap类型的map报文,遍历map报文的子元素,该map报文的json路径为user_info:
[0101]
首先遍历第1个子元素("name":"big_cat"),其中,key为name,value为"big_cat"、第1个子元素的json路径为user_info.;由于value是字符串类型,所以将user_info. name=user_info.name作为当前json路径、"big_cat"作为value存入解析结果集。
[0102]
然后遍历第2个子元素("age":25),其中,key为age,value为25,第2个子元素的json路径为user_info.;由于value是数值类型,所以将user_info. age=user_info.age作为当前json路径,25作为value存入解析结果集。
[0103]
再遍历第3个子元素("is_marry":false),其中,key为is_marry,value为false;由于value是布尔类型,将user_info. is_marry=user_info.is_marry作为当前json路径,false作为value存入解析结果集。
[0104]
最后遍历第4个子元素("wife":null),其中,key为wife、value为null;由于value是null,将user_info. wife=user_info.wife作为当前json路径、null作为value存入解析结果集。至此整个报文递归解析完成,得到最终的解析结果集。最终的解析结果集如表2所示。
[0105]
表2
[0106]
当前json路径json路径对应的值list_1[]list_2[1,2,3]list_3[0].sub_map_item"empty"user_info.name"big_cat"user_info.age25user_info.is_marryfalseuser_info.wifenull
[0107]
具体地,1)若报文中的子元素的value的类型为map,则将value转换为linkedhashmap类型的map报文,遍历map报文的key

value,根据key

value和新的key={当前报文的json路径 key '.'}返回执行步骤003。
[0108]
2)若value的类型为list,具体为:
[0109]
1.若list的大小为0,则中断当前递归,将{当前报文的json路径 传入的key}作为当前json路径,将空数组作为value存入解析结果集(解析结果集的每一项包含有当前json路径及其对应的value值)。
[0110]
2.若list大小不为0且子元素的类型不为map,则中断当前递归,将{当前报文的json路径 传入的key}作为新的当前json路径,将value和新的当前json路径存入解析结果集。
[0111]
3.若list大小不为0且子元素的类型为map,则遍历map的子元素,将map子元素作为新的报文,将{当前报文的json路径 传入的key [i] '.'}作为新的报文的json路径,i表示子元素在list中的位置。
[0112]
3)若value的类型为字符串、数值、布尔型和null中的一种:则中断当前递归,将{当前报文的json路径 传入的key}作为当前json路径,将当前json路径和value存入解析结果集。
[0113]
为了进一步提高比对结果列表的可靠性,在本技术一个实施例中,步骤400包括:
[0114]
步骤410:根据所述第一解析结果集和第二解析结果集中的当前json路径和值,生成比对结果列表并输出。
[0115]
步骤410可以具体包含有:
[0116]
步骤040:遍历第一解析结果集中的当前json路径:
[0117]
1.若第二解析结果集中不包含此当前json路径,则记录:{"第一json报文对应值":"xxx","第二json报文对应值":null,"comparedresult":"different","remark":"第
二解析结果集不包含此字段"}。
[0118]
2.若第二解析结果集中包含此当前json路径并且对应的值不同,则记录:{"第一json报文对应值":"xxx","第二json报文对应值":"yyy","comparedresult":"different","remark":"字段值不一致"}。
[0119]
3.若第二解析结果集中包含有此当前json路径且对应值一致,则记录:{"第一json报文对应值":"xxx","第二json报文对应值":"xxx","comparedresult":"same","remark":""}。
[0120]
4.将上述各个记录存入比对结果列表,并删除第一解析结果集和第二解析结果集中上述记录对应的行数据。
[0121]
步骤041:在遍历第一解析结果集之后,第一解析结果集中不存在第二解析结果集中的剩余的当前json路径,基于第二解析结果集中的剩余的当前json路径,记录:{"第一json报文对应值":null,"第二json报文对应值":"yyy","comparedresult":"different","remark":"第一解析结果集不包含此字段"},存入比对结果列表。
[0122]
步骤042:将比对结果列表输出至前端。
[0123]
对比结果列表的格式可以如表3所示。
[0124]
表3
[0125][0126]
进一步地,可以采用表格和json树两种方式将比对结果列表及相关数据在前端展示;对于表格方式来说,表格可以有5列数据,分别为:字段路径(即当前json路径)、第一json报文对应值、第二json报文对应值、对比结果和备注,可以将每一行根据对比结果用不同颜色显示,提高对比结果的显著程度,数据简单直观,易于增加各种筛选条件、只显示不一致记录等,数据操作性高;对于json树方式来说,每个报文对应一个json树,因为字段路径包含了完整的字段父子节点关系,所以可以实现从对比结果还原原json报文;除了按json原结构展示外,叶子节点采用标签的形式,根据不同的对比结果采用不同颜色的标签,可以将对比结果一致的值的下划线用蓝色线表示,对比不一致的值的下划线用红色线表示,若另一报文不存在的当前json路径,则将当前json路径和其对应值的下划线用橙色线表示,并且标签加上悬浮提示框,用来展示对比的结果详情,当用户鼠标移过该标签便自动展示,可以实现数据图形化,直观展示json结构,美观且易于理解各字段间的关系。
[0127]
表4为本技术一种举例中的第一报文,表5为一种举例中的第二报文,表6为以表格形式展示的表4中的第一报文和表5中的第二报文对应的比对结果列表;表4中的第一报文对应的json树示意图如图4所示;表5中的第二报文对应的json树示意图如图5所示,图4和图5中对应的值为map类型的键可以设置于椭圆框内,对应的值为array类型的键可以设置于圆角矩形框内,其它数据类型的的值及其对应的键可以设置于下划线上,数据类型后加上value:***,表示其对应的值是***;表6、图4和图5可以直观反映第一报文和第二报文的比对结果。
[0128]
表4
[0129][0130]
表5
[0131][0132]
表6
[0133][0134]
从软件层面来说,为了提高json文本比对的准确性,本技术提供一种用于实现所述json文本的比对方法中全部或部分内容的json文本的比对装置的实施例,参见图6,所述json文本的比对装置具体包含有如下内容:
[0135]
获取模块10,用于获取第一json报文和第二json报文。
[0136]
转化模块20,用于将第一json报文转化为linkedhashmap类型的第一报文,并将第二json报文转化为linkedhashmap类型的第二报文。
[0137]
生成模块30,用于根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集。
[0138]
比对模块40,用于根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出。
[0139]
本说明书提供的json文本的比对装置的实施例具体可以用于执行上述json文本的比对方法的实施例的处理流程,其功能在此不再赘述,可以参照上述json文本的比对方法实施例的详细描述。
[0140]
由上述描述可知,本技术提供的json文本的比对方法及装置,能够提高json文本比对的准确性;具体地,能够支持复杂多层的json报文的比对,提高报文比对的准确性,节省人力成本,并且可以明确各个值对应的详细路径,便于接下来异常分析等;同时,还能够提高报文比对的效率。
[0141]
图7为本发明一实施例提供的电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)401、通信接口(communications interface)402、存储器(memory)403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信。处理器401可以调用存储器403中的逻辑指令,以执行如下方法:获取第一json报文和第二json报文;将第一json报文转化为linkedhashmap类型的第一报文,并将第二json报文转化为linkedhashmap类型的第二报文;根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集;根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出。
[0142]
此外,上述的存储器403中的逻辑指令可以通过软件功能单元的形式实现并作为
独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0143]
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取第一json报文和第二json报文;将第一json报文转化为linkedhashmap类型的第一报文,并将第二json报文转化为linkedhashmap类型的第二报文;根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集;根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出。
[0144]
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取第一json报文和第二json报文;将第一json报文转化为linkedhashmap类型的第一报文,并将第二json报文转化为linkedhashmap类型的第二报文;根据所述第一报文和第二报文,生成第一解析结果集和第二解析结果集;根据所述第一解析结果集和第二解析结果集,得到比对结果列表并输出。
[0145]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0146]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0147]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0148]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0149]
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0150]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜