区分 JSON 并生成添加/删除/修改内容的 Java 库?

软件推荐 图书馆 爪哇 json
2021-10-16 03:23:43

是否有任何 Java 库可以区分两个 JSON 字符串并生成树结构,您可以遍历该树结构以找出添加了哪些节点、删除了哪些节点以及修改了哪些节点?

2个回答

我发现了两个 Java 库,它们可以区分两个 JSON 字符串并判断添加、删除和修改的内容。这两个库都根据RFC 6902(JSON 补丁)生成输出:

zjsonpatch 更好,因为它可以检测从数组中插入/删除的项目。Fge json-patch 无法处理 - 如果将一个项目插入到数组的中间,它会认为该项目和之后的每个项目都已更改,因为它们都被移动了一个。

zjsonpatch 的示例用法:

ObjectMapper jackson = new ObjectMapper(); 
JsonNode beforeNode = jackson.readTree(beforeString); 
JsonNode afterNode = jackson.readTree(afterString); 
JsonNode patchNode = JsonDiff.asJson(beforeNode, afterNode); 
String diff = patchNode.toString();

我做了一些研究来为自己最终确定一个差异生成库。@pacoverflow 指出的错误似乎已解决。我没有遇到这个问题。由于以下原因,我投票支持fge json-patch :

  1. 良好的文档支持。
  2. 支持序列化。
  3. 最严格遵循 RFC 6902 标准。zjsonpatch 的行为可能与 int 和 float 值比较不同(处理 1 和 1.0 不同)。
  4. 带有 zjsonpatch 的开放错误表明可能存在损坏的补丁。