在 Beyond Compare 中比较 Json 文件

jxr*_*mos 11 diff beyondcompare

如何在 Beyond Compare 中比较两个缩小的 json 文件?是否有内置的 json 文件格式?我正在寻找比较底层 json 对象的两个漂亮的打印表示。

Tim*_*ter 9

在这个帖子中,一位代表说:

虽然尚未开箱,但我们确实在“其他文件格式”部分提供了可供下载的 JSON 排序格式:

带有滑板车软件下载的链接


jxr*_*mos 6

您可以通过在 Beyond Compare 中定义新的文件格式转换规则来实现这种专门的 diff 功能。本示例是在 Windows 操作系统中进行的。

步骤0:创建一个python转换脚本来渲染格式化的json。将以下 python 脚本保存在硬盘上的某个位置

import json
import sys

sourceFile = sys.argv[1]
targetFile = sys.argv[2]

with open(sourceFile, 'r') as file_r:
    # Load json data
    data = json.load(file_r)

    # Write formatted json data
    with open(targetFile, 'w') as file_w:
        json.dump(data, file_w, indent=4)
Run Code Online (Sandbox Code Playgroud)

第 1 步:在 BeyondCompare 菜单中导航至:Tools-->File Formats...

步骤 2:单击 按钮+并选择创建新的文件格式条目Text Format 新的文本文件格式

步骤 3:输入*.json文件格式的掩码字段以及任何有助于您回忆文件格式用途的描述。 定义新文件格式

步骤 4:定义文件格式的转换设置。选择“转换”选项卡,然后从下拉列表中选择“外部程序(unicode 文件名)”。在 Loading 字段中写入以下 shell 命令

python C:\Source\jsonPrettyPrint.py "%s" "%t"
Run Code Online (Sandbox Code Playgroud)

文件格式的转换设置

步骤 5:按“保存”按钮,并可以通过在“文件格式名称”和“掩码”表中右键单击文件格式来重命名该文件格式。

可以通过查看 python文档来考虑 json 转储的进一步专业化,例如sort_keys=True

  • 这很棒,但如果将 `, sort_keys=True` 添加到 `json.dump` 调用中(即 `json.dump(data, file_w, indent=4, sort_keys=True)`),效果会更好。这样,您就不会因为 JSON 对象键顺序(这是任意的)而出现差异。 (2认同)