JSON文件的差异工具?

软件推荐 json 差异
2021-10-12 21:03:13

在需要XML 文件的 Diff 工具之后?我现在正在寻找 JSON 数据的差异工具。

相同的要求:

  • 自由
  • 基于树,而不是基于行即,如果一个部分已移动到同一级别/同一树枝中的不同位置,则不应报告差异。
  • JSON 数组中的顺序也无关紧要;交换的元素应该被视为“没有区别”。
  • 应标记所有差异,最好在并排视图中使用指示符或连接不同部分的线
  • 有网络版就好了

这两个文件应报告为“相同”:

{
 "errormessage": "",
 "success": 1,
 "items": [
  {
   "id": 20100,
   "name": "AA3 met extra tekst2"
  },{
   "name": "Indirecte uren\\Ziekte",
   "id": 34
  }],
 "type": "ttgetlistresult"
}

{
 "errormessage": "",
 "items": [
  {
   "id": 34,
   "name": "Indirecte uren\\Ziekte"
  },{
   "id": 20100,
   "name": "AA3 met extra tekst2"
  }],
 "success": 1,
 "type": "ttgetlistresult"
}
4个回答

我的开源在线 json diff 工具应该可以解决问题:http: //json-diff.com

http://json-diff.com

在研究这个问题的答案时,除了使用 SemanticMerge 作为我对“XML 文件的 Diff 工具”的建议答案的变体之外,我还发现了另一个声称对一些编程语言具有上下文感知能力的工具:Compare++,它吹嘘下列的:

与其他文件比较工具相比,Compare++ 的一大特点是使用具有两种比较模式(“面向代码”和“面向文本”)的语言感知结构化比较引擎来比较源文件。通过对代码结构的全面了解,可以获得更精准的代码对比结果和丰富的后期对比功能。
...
为了帮助您查看代码结构更改,提供了一个可停靠窗格“功能视图”,其中列出了所有结构,例如功能、类或命名空间更改(修改删除添加)。

...

针对 C/C++、Java、C#、Javascript、CSS 的语言感知结构化比较...

  • Compare++ 解析源文件,内置分析 C/C++、C#、Java、php、html、Javascript、CSS3 和其他语言,自动提取结构化代码树并突出显示语法。
  • 它不仅可以比较文件内容,还可以在一个并排的函数视图中显示和报告所有函数、类、命名空间的变化。
  • 在函数视图中,您可以自定义过滤模式以仅显示修改后的函数。

该程序不是免费软件(29.95 美元/用户),但您可以在没有许可证的情况下试用 30 天。

我不确定它是否真的暗示代码被移动了,或者这是否需要一些体力劳动,但它确实在功能视图中声称能够检测它是否被修改、删除或添加。

PS!顺便说一句,它确实可以处理 html,所以它也可以处理 xml 吗?
PPS!这是python中比较XML的工具(可能可以更改为比较json(如果转换为etree))。然而,这似乎是为平等检查而编写的,并没有提供那么多视觉反馈。

我最近在https://pypi.python.org/pypi/json-delta/找到了 json-delta

您可以使用命令在您的计算机上安装

pip install json-delta

要使用它,只需使用命令

json_diff -u file1.json file2.json

这可能有用:

它是一个命令行工具。