一种JSON文本的比对方法和装置制造方法及图纸

技术编号:19320340 阅读:19 留言:0更新日期:2018-11-03 10:53
本发明专利技术提供一种JSON文本的比对方法和装置,能够对两个无序的JSON文本及JSON中无序的array进行比较,并且用户可以根据不同的需求,自定义不需要比对的属性,不仅提高了比对的准确性,而且也在一定程度上提高了比对效率。本发明专利技术的JSON文本的比对方法包括:保存待比对JSON文本的配置信息;所述配置信息用于设置比对文本中的不需要比对的属性;解析所述待比对JSON文本,以将JSON格式的文本转换为多叉树结构的文本;将所述多叉树结构的文本转换为键值对结构的文本;结合所述配置信息,将所述键值对结构的文本进行比对,以得到比对结果。

JSON text comparison method and device

The invention provides a JSON text comparison method and device, which can compare two disordered JSON texts and disordered arrays in JSON, and users can customize the attributes that do not need to be compared according to different needs, which not only improves the accuracy of comparison, but also improves the efficiency of comparison to a certain extent. The JSON text matching method of the present invention includes: saving the configuration information of the JSON text to be compared; using the configuration information to set the properties of the JSON text that need not be compared; parsing the JSON text to be compared in order to convert the text in JSON format to the text in multi-tree structure; and converting the text of the multi-tree structure to the text. The key value is used to match the text of the structure, and the key value is used to compare the text of the structure with the configuration information to obtain the comparison result.

【技术实现步骤摘要】
一种JSON文本的比对方法和装置
本专利技术涉及计算机
,特别涉及一种JSON文本的比对方法和装置。
技术介绍
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它如今已经成为比较流行的数据交换格式,可用于网络传输数据格式、数据存储格式等等。随着它的流行,围绕它产生的需求也越来越多,比如:比较两个JSON文本是否有差异。现有技术中,有很多文本比较工具,比如:BeyondCompare、Changes、Diff以及一些在线的对比工具等等。现有技术的技术方案中,对于JSON文本的比对来说,分为对文本解析和不解析两种情况:1、不解析JSON文本:逐行读取JSON文本,按照行进行文本比较,将不相同的行以某种符号进行标记或输出。2、解析JSON文本:对解析后的JSON分别对名称和值进行比较,将不相同的内容以某种符号或颜色标记或输出。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:1、无法解决乱序比较问题。例如,无法将“名称/值”一致,但“名称/值”与其他“名称/值”顺序不一致的JSON文本进行比较。2、无法进行一些个性化比较。例如,无法忽略不需要对比的“名称/值”。
技术实现思路
有鉴于此,本专利技术实施例提供一种JSON文本的比对方法和装置,能够对两个无序的JSON文本及JSON中无序的array进行比较,并且用户可以根据不同的需求,自定义不需要比对的属性,不仅提高了比对的准确性,而且也在一定程度上提高了比对效率。为实现上述目的,根据本专利技术的第一个方面,提供了一种JSON文本的比对方法。本专利技术的JSON文本的比对方法包括:保存待比对JSON文本的配置信息;所述配置信息用于设置比对文本中的不需要比对的属性;解析所述待比对JSON文本,以将JSON格式的文本转换为多叉树结构的文本;将所述多叉树结构的文本转换为键值对结构的文本;结合所述配置信息,将所述键值对结构的文本进行比对,以得到比对结果。可选地,所述解析所述待比对JSON文本,以将JSON格式的文本转换为多叉树结构的文本的步骤包括:逐行读取JSON文本,根据以下解析规则对所述JSON格式的文本进行解析;当读取到对象时,解析规则包括:对象中元素包括三种形式:对象object、数组array、以及值value;规则1:当对象中的元素为对象时:将该元素解析成一个类型为object的子节点,同时在重复解析此子节点内部元素,直到读取到值value元素为止;规则2:当对象中的元素为数组时:遍历数组中元素,数组中的元素包括:对象object和值value:当数组中的元素为值value时,将该元素转换成类型为primitive的子节点;当数组中的元素为对象object时,将该元素转换成类型为object的子节点;再对该元素以读取到对象时的解析规则进行解析;规则3:当对象中的元素为值时:将该元素解析成一个类型为primitive的子节点,并以此节点解析结束;当读取到数组时,解析规则包括:当数组中的元素为值value时,将该元素转换成类型为primitive的子节点;当数组中的元素为对象object时,将该元素转换成类型为object的子节点;再对该元素以读取到对象时的解析规则进行解析;当读取到值时,解析规则为:将该元素解析成一个类型为primitive的子节点,并以此节点解析结束。可选地,将所述多叉树结构的文本转换为键值对结构的文本的步骤包括:从所述多叉树的根节点至叶子节点分别进行遍历,将遍历经过的路径的节点名称通过点拼接起来,以得到该多叉树所有的路径名称;将路径名称作为该文本的一个键名,将该路径名称的路径末端叶子节点的值作为对应于该键名的键值。可选地,所述将路径名称作为该文本的一个键名,将该路径名称的路径末端叶子节点的值作为对应于该键名的键值的步骤包括:查找相同的路径名称进行去重,将该重复的路径名称作为文本的一个键名,然后将路径相同的末端的叶子节点的值组成数组,并将数组中的值按照ASII编码由小到大排序,以得到该路径名称的键名所对应的键值;将除去重复路径后的剩余每一个路径名称作为文本的一个键名,将各路径末端的叶子节点的值作为对应于该键名的键值。可选地,所述结合所述配置信息,将所述键值对结构的文本进行比对,以得到比对结果的步骤包括:步骤A:确定键名数量多的文本;步骤B:获取键名数量多的文本中的一个键名;步骤C:判断键名是否与所述配置信息中的属性相匹配,若是,执行步骤B;否则,执行步骤D;步骤D:从键名数量少的文本中查找相同的键名,如果找到,则执行步骤E;否则,将键名存入不同路径集合中;步骤E:判断步骤D中所查找到的键名所对应的键值是否与步骤B中键名所对应的键值相同,若是,则返回步骤B;否则,将键名存入不同路径集合中;步骤F:判断不同路径集合是否为空,若是,则返回表明文本相同的比对结果;否则,返回表明比对文本不同的比对结果。根据本专利技术的第二个方面,提供了一种JSON文本的比对装置。本专利技术的JSON文本的比对装置包括:保存模块,用于保存待比对JSON文本的配置信息;所述配置信息用于设置比对文本中的不需要比对的属性;解析模块,用于解析所述待比对JSON文本,以将JSON格式的文本转换为多叉树结构的文本;转换模块,用于将所述多叉树结构的文本转换为键值对结构的文本;比对模块,用于结合所述配置信息,将所述键值对结构的文本进行比对,以得到比对结果。可选地,所述解析模块还用于:逐行读取JSON文本,根据以下解析规则对所述JSON格式的文本进行解析;当读取到对象时,解析规则包括:对象中元素包括三种形式:对象object、数组array、以及值value;规则1:当对象中的元素为对象时:将该元素解析成一个类型为object的子节点,同时在重复解析此子节点内部元素,直到读取到值value元素为止;规则2:当对象中的元素为数组时:遍历数组中元素,数组中的元素包括:对象object和值value:当数组中的元素为值value时,将该元素转换成类型为primitive的子节点;当数组中的元素为对象object时,将该元素转换成类型为object的子节点;再对该元素以读取到对象时的解析规则进行解析;规则3:当对象中的元素为值时:将该元素解析成一个类型为primitive的子节点,并以此节点解析结束;当读取到数组时,解析规则包括:当数组中的元素为值value时,将该元素转换成类型为primitive的子节点;当数组中的元素为对象object时,将该元素转换成类型为object的子节点;再对该元素以读取到对象时的解析规则进行解析;当读取到值时,解析规则为:将该元素解析成一个类型为primitive的子节点,并以此节点解析结束。可选地,所述转换模块还用于:从所述多叉树的根节点至叶子节点分别进行遍历,将遍历经过的路径的节点名称通过点拼接起来,以得到该多叉树所有的路径名称;将路径名称作为该文本的一个键名,将该路径名称的路径末端叶子节点的值作为对应于该键名的键值。可选地,所述转换模块还用于:查找相同的路径名称进行去重,将该重复的路径名称作为文本的一个键名,然后将路径相同的末端的叶子节点的值组成数组,并将数组中的值按照ASII编码由小到大排序,以得到该路径名称的键名本文档来自技高网...

【技术保护点】
1.一种JSON文本的比对方法,其特征在于,包括:保存待比对JSON文本的配置信息;所述配置信息用于设置比对文本中的不需要比对的属性;解析所述待比对JSON文本,以将JSON格式的文本转换为多叉树结构的文本;将所述多叉树结构的文本转换为键值对结构的文本;结合所述配置信息,将所述键值对结构的文本进行比对,以得到比对结果。

【技术特征摘要】
1.一种JSON文本的比对方法,其特征在于,包括:保存待比对JSON文本的配置信息;所述配置信息用于设置比对文本中的不需要比对的属性;解析所述待比对JSON文本,以将JSON格式的文本转换为多叉树结构的文本;将所述多叉树结构的文本转换为键值对结构的文本;结合所述配置信息,将所述键值对结构的文本进行比对,以得到比对结果。2.根据权利要求1所述的方法,其特征在于,所述解析所述待比对JSON文本,以将JSON格式的文本转换为多叉树结构的文本的步骤包括:逐行读取JSON文本,根据以下解析规则对所述JSON格式的文本进行解析;当读取到对象时,解析规则包括:对象中元素包括三种形式:对象object、数组array、以及值value;规则1:当对象中的元素为对象时:将该元素解析成一个类型为object的子节点,同时在重复解析此子节点内部元素,直到读取到值value元素为止;规则2:当对象中的元素为数组时:遍历数组中元素,数组中的元素包括:对象object和值value:当数组中的元素为值value时,将该元素转换成类型为primitive的子节点;当数组中的元素为对象object时,将该元素转换成类型为object的子节点;再对该元素以读取到对象时的解析规则进行解析;规则3:当对象中的元素为值时:将该元素解析成一个类型为primitive的子节点,并以此节点解析结束;当读取到数组时,解析规则包括:当数组中的元素为值value时,将该元素转换成类型为primitive的子节点;当数组中的元素为对象object时,将该元素转换成类型为object的子节点;再对该元素以读取到对象时的解析规则进行解析;当读取到值时,解析规则为:将该元素解析成一个类型为primitive的子节点,并以此节点解析结束。3.根据权利要求1所述的方法,其特征在于,将所述多叉树结构的文本转换为键值对结构的文本的步骤包括:从所述多叉树的根节点至叶子节点分别进行遍历,将遍历经过的路径的节点名称通过点拼接起来,以得到该多叉树所有的路径名称;将路径名称作为该文本的一个键名,将该路径名称的路径末端叶子节点的值作为对应于该键名的键值。4.根据权利要求3所述的方法,其特征在于,所述将路径名称作为该文本的一个键名,将该路径名称的路径末端叶子节点的值作为对应于该键名的键值的步骤包括:查找相同的路径名称进行去重,将该重复的路径名称作为文本的一个键名,然后将路径相同的末端的叶子节点的值组成数组,并将数组中的值按照ASII编码由小到大排序,以得到该路径名称的键名所对应的键值;将除去重复路径后的剩余每一个路径名称作为文本的一个键名,将各路径末端的叶子节点的值作为对应于该键名的键值。5.根据权利要求1所述的方法,其特征在于,所述结合所述配置信息,将所述键值对结构的文本进行比对,以得到比对结果的步骤包括:步骤A:确定键名数量多的文本;步骤B:获取键名数量多的文本中的一个键名;步骤C:判断键名是否与所述配置信息中的属性相匹配,若是,执行步骤B;否则,执行步骤D;步骤D:从键名数量少的文本中查找相同的键名,如果找到,则执行步骤E;否则,将键名存入不同路径集合中;步骤E:判断步骤D中所查找到的键名所对应的键值是否与步骤B中键名所对应的键值相同,若是,则返回步骤B;否则,将键名存入不同路径集合中;步骤F:判断不同路径集合是否为空,若是,则返回表明文本相同的比对结果;否则,返回表明比对文本不同的比对结果。6.一种JSON文本的比对装置,其特征在于,包括:保存模块,用于保存待比对JS...

【专利技术属性】
技术研发人员:邱龙詹平平
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1