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

评论

fge json-patch的最新版本是2014年11月,猜测该项目已被放弃。

#1 楼

我找到了两个Java库,它们可以区分两个JSON字符串并告诉您添加,删除和修改的内容。这两个库均根据RFC 6902(JSON补丁)生成输出:


zjsonpatch
fge json-patch

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();


#2 楼

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


良好的文档支持。
支持序列化。 >大多数都严格遵循RFC 6902标准。在比较int和float值时,zjsonpatch的行为可能有所不同(处理1和1.0有所不同)。