相同的要求:
免费
基于树,而不是行基于也就是说,如果某个节已移到同一级别/同一树枝中的不同位置,则不应报告差异。
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"
}
#1 楼
我的开源在线json差异工具应该可以解决这个问题:http://json-diff.com评论
真好是否有桌面版本?
–Paul Praet
16年1月20日在15:03
JSON数组中的顺序也不相关;交换的元素应被视为“无差异”。如何执行此操作?我看到差异是顺序敏感的。有选择吗?
– Saurabh Shrivastava
20年1月3日,17:35
#2 楼
在研究该问题的答案时,除了可以将SemanticMerge用作我对“ XML文件的差异工具”的建议答案之外,我还发现了另一种声称对某些编程语言具有上下文意识的工具:Compare ++,它吹嘘following:与其他文件比较工具相比,在Compare ++中进行的出色过程是使用具有两种比较模式(“面向代码”和“面向文本”)的语言感知的结构化比较引擎进行比较源文件。通过完全了解代码结构,您可以获得更精确的代码比较结果和丰富的比较后功能。
...
为了帮助您查看代码结构更改,可停靠的窗格“功能视图”提供,其中列出了所有结构,例如功能,类或名称空间更改(修改,删除或添加)。
...
针对C / C ++,Java,C#, Javascript,CSS,...
Compare ++具有对C / C ++,C#,Java,php,html,Javascript,CSS3和其他语言的内置分析的源文件解析功能,可自动提取结构化代码树和高亮语法。
它不仅可以比较文件内容,而且还可以在并排的功能视图中显示和报告所有功能,类,名称空间更改。
在功能视图中,您可以可以自定义过滤器模式以仅显示修改后的功能。该程序不是免费软件(每位用户29.95美元),但是您可以在没有许可证的情况下试用30天。
我不确定它是否实际上暗示着代码已被移动,还是需要一些手工劳动,但是它确实在功能视图中声称能够检测到它是否被修改,删除或添加。 br />PS!在旁注中,它确实可以处理html,因此它也可以处理xml吗?这是python中用于比较XML的工具(可以将其更改为比较json(如果转换为etree)。但是,这似乎是为进行相等性检查而编写的,并且没有提供太多的视觉反馈。
#3 楼
我最近在https://pypi.python.org/pypi/json-delta/找到了json-delta,您可以使用命令
pip install json-delta
将其安装在计算机上/>
要使用它,只需使用命令
json_diff -u file1.json file2.json
评论
在比较JSON中的数组时,JSON-delta是顺序敏感的,因此虽然非常有用的工具不符合OP的标准。需要注意的是,如果您在比较包含预期会更改的数据(例如时间戳)的JSON文件,则可以在进行比较之前使用json-delta删除该数据(通过其补丁功能)。
– Chuck van der Linden
18年8月28日在18:47
#4 楼
这可能有用:https://github.com/andreyvit/json-diff
https://www.npmjs.com/package/json-diff
这是一个命令行工具。
#5 楼
对于也可以从磁盘加载文件的联机版本,请参见:http://www.jsondiff.com/评论
还有另一个答案已经建议使用相同的工具。
–亚历杭德罗
18-10-9在12:42
@Alejandro不,没有;注意连字符
–user416
18-10-9在12:46
#6 楼
您可以使用在线很棒的工具,例如:-JSON Compare
JSON Diff
评论
欢迎使用SoftwareRecs,但这是低质量的答案。 1.您的链接被反向2. JSON Diff在其他地方已经提到过3.这是仅链接的答案,可能会被删除softwarerecs.meta.stackexchange.com/questions/624/…请编辑答案
–user416
19年2月12日在10:01
#7 楼
只需使用diff。像在diff --unified file1.json file2.json
(来源;有关--unified的详细信息)
评论
恕我直言,这很大程度上是基于行和顺序的问题,OP都不希望这样。因此,它不能回答问题。
–托马斯·韦勒(Thomas Weller)
16年6月7日在22:01
@ThomasWeller你是对的。问题描述中的两个文件不相等。我可以删除它,尽管此解决方案仍然可以帮助某人(因为它对我有帮助)。
–丹尼斯·戈洛马佐夫(Dennis Golomazov)
16年6月7日在22:06
评论
正如在另一个问题上回答的那样,我仍然认为语义合并是您最好的选择。并没有那么多的差异化工具会关注语义,而不仅仅是文本差异。通过在Google上搜索“ json diff”,我至少找到了三种工具(例如,一种)。您已经尝试过了吗?
@ComFreek,我尝试了您链接到的工具,并粘贴了一些被codebeautify.org/jsonviewer美化的json代码,它表示json是错误的... :(
@jans您是否找到解决方案?如果是这样,您能接受答案还是发表自己的答案?那会帮助其他人