您建议如何完成这项任务?
在我看来,挑战在于智能地呈现差异信息。在我重新发明轮子之前,是否有一种公认的方法来处理这种比较?
原文由 James Raitsev 发布,翻译遵循 CC BY-SA 4.0 许可协议
您建议如何完成这项任务?
在我看来,挑战在于智能地呈现差异信息。在我重新发明轮子之前,是否有一种公认的方法来处理这种比较?
原文由 James Raitsev 发布,翻译遵循 CC BY-SA 4.0 许可协议
我推荐 zjsonpatch 库,它根据 RFC 6902 (JSON 补丁)呈现差异信息。您可以将它与杰克逊一起使用:
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 无法处理(如果一个项目被插入到数组的中间,它会认为该项目和之后的每个项目都发生了变化,因为它们都被移动了一个)。
原文由 pacoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.1k 阅读✓ 已解决
4 回答793 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答661 阅读✓ 已解决
2 回答1.6k 阅读
2 回答1.6k 阅读
您可以尝试 XStream 的架构,处理 JSON 映射
另外,请看一下这篇文章: Comparing two XML files & generating the third with XMLDiff in C# 。它在 C# 中,但逻辑是相同的。