添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
礼貌的跑步机  ·  卡通渲染(下) ...·  1 周前    · 
威武的日记本  ·  QSslSocket server·  1 月前    · 
细心的豆腐  ·  Coffee house supplier ...·  3 月前    · 
谈吐大方的鸵鸟  ·  Dynamics Community ...·  6 月前    · 
心软的猕猴桃  ·  麻酥酥哟 – ...·  7 月前    · 

Repository files navigation

JsonDiff介绍

JsonDiff提供了对Json通用的diff能力,支持Json字符串的深度比较,支持无序数组比较,内含多种算法模型满足对Json比较时各种需求。 同时JsonDiff也支持自定义算法、算法模型可配置、噪音字段过滤、自定义比较字段等多种通用功能。

1.JsonDiff是什么

JsonDiff可以对输入的两个Json字符串进行差值比较,利用diff算法得到差异化最小的比较结果。diff结果会展示2个Json字符串中不同结果的值、路径以及修改类型。

  jsonA: {"name":"张三","phon3":"12345678901","g3nder":"男","timestamp":"1646201087874"}
  jsonB: {"name":"张三","b1rth":"2000-01-01","g3nder":"男","timestamp":"1646201087875"}
  • diff结果:
    [{"diffType":"DELETE","left":"12345678901","leftPath":"phon3"},{"diffType":"MODIFY","left":"1646201087874","right":"1646201087875","leftPath":"timestamp","rightPath":"timestamp"},{"diffType":"ADD","right":"2000-01-01","rightPath":"b1rth"}]

    2.diff的算法模型

    json的比较算法可以抽象为针对四种json基本结构的比较(JsonArray,JsonObject,JsonNull,JsonPrimitive),因此json-diff主要抽象了以下四种比较器能力以及默认实现。

  • 灵活选择比较算法组合:
      new Diff().withObjectComparator(objectComparator).withArrayComparator(arrayComparator).withPrimitiveAlgorithm(primitiveComparator).withNullComparator(nullComparator)
    步骤2:执行diff
  • 严格比较两个json字符串是否相等
    diff.diff(jsonA, jsonB)
    diff.withNoisePahList(noiseList).diff(jsonA, jsonB)
    路径设置说明 :字段路径中包含数组路径时,如"[0].name",自定义路径忽略数组索引号,设置成"name"即可。
  • 数组比较时,指定主键字段
    diff.withSpecialPath(specialPath).diff(jsonA, jsonB)

    5、第三方依赖

  •