[JSON123] A JSON Compare Tool

本文详细介绍了基于Jackson库的JSON比较器实现原理,包括DefaultJsonComparator、JSONCompare、JsonMatcher等核心类的功能与作用,以及如何通过递归调用进行JSON对象、数组和文本的比较。

https://github.com/fslev/json-compare

使用到的库

Jackson (学习资料:https://www.yiibai.com/jackson

 

Class: DefaultJsonComparator implements JsonComparator

Functions: 均使用Pattern.matcher进行比较

  • compareValues:  比较value(Object类型支持多种类型)
  • compareFields: 比较key值(指定String类型)

 

Class: JSONCompare

Functions: 重载多种用户自定义模式

  • assertEquals: new JsonMatcher
  • assertNotEquals: new JsonMatcher
  • getJson: 校验输入String是否符合Json文件格式定义;若符合则return JsonNode
  • prettyPrint: return String  

 

Class: JsonMatcher extends AbstractJsonMatcher

Functions:

  • matches(): 校验actualJsonNode Type是否一致;若一致则继续对node进行匹配new JsonObjectMatcher /JsonArrayMatcher /JsonTextMatcher
  • getUseCase()
  • sanitize()
  • isJsonObject()
  • isJsonArray()
  • isJsonText()
  • areOfSameType()

Variables: 

  • JsonComparator comparator
  • Set<CompareMode> compareMode
  • JsonNode expected, actual

 

Class:
JsonObjectMatcher extends AbstractJsonMatcher

Functions:

  • matches(): 遍历expected的每个key,并根据UseCase来校验actual key是否匹配;若key匹配,则通过递归调用(new JsonMatcher)来校验value对象是否匹配

Class:
JsonArrayMatcher extends AbstractJsonMatcher

Functions:

  • matches(): 遍历expected的每个元素,根据UseCase,通过递归调用 (new JsonMatcher)来校验子元素是否匹配

Class:
JsonTextMatcher extends AbstractJsonMatcher
Functions:

  • Matches(): 终结点value的比较,先校验actual的valueType是否匹配;若一致则对value进行匹配


Class: MatcherException extends Exception

 

Enum: CompareMode






 

转载于:https://www.cnblogs.com/cathygx/p/11137487.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值