您建议如何完成这项任务?
在我看来,挑战在于智能地呈现差异信息。在我重新发明轮子之前,是否有一种公认的方法来处理这种比较?
最佳答案
我推荐 zjsonpatch库,根据 RFC 6902 显示差异信息(JSON 补丁)。您可以将它与 Jackson 一起使用:
JsonNode beforeNode = jacksonObjectMapper.readTree(beforeJsonString);
JsonNode afterNode = jacksonObjectMapper.readTree(afterJsonString);
JsonNode patch = JsonDiff.asJson(beforeNode, afterNode);
String diffs = patch.toString();
这个库优于fge-json-patch (在另一个答案中提到过)因为它可以检测到从数组中插入/删除的项目。 Fge-json-patch 无法处理(如果一个项目被插入到数组的中间,它会认为该项目和之后的每个项目都发生了变化,因为它们都被移动了一个)。
关于java - 在 Java 中比较两个 JSON 文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6526911/