compare-json(Python)

compare-json-py 是 compare-json 的 Python 移植版——结构化 JSON 对比,语义与本网站使用的对比引擎完全一致。它可以检测两个 JSON 值之间的新增、删除、类型变更和值变更,并支持控制键、值和数组的匹配方式。同时提供库与 CLI,零运行时依赖。

语言:Python —— 通过 PyPI 分发。源码见 GitHub。

安装

pip install compare-json-py

快速开始

库

from compare_json import compareJSON, CompareOptions

base = {"name": "Alice", "age": 30}
contrast = {"name": "Bob", "age": "30", "email": "[email protected]"}

diffs = compareJSON(base, contrast)
for d in diffs:
    print(d.path_string, d.path_belongs_to, d.diff_type.value)
# name   both     valueChanged
# age    both     typeChanged
# email  contrast added

# 使用选项
options = CompareOptions(
    array_compare_method="lcs",  # 或 "byIndex"、"unordered"
    key_case_insensitive=True,
    value_case_insensitive=True,
    numeric_string_equals_number=True,
)
diffs = compareJSON(base, contrast, options)

CLI

# 对比 JSON 文件
compare-json base.json contrast.json

# 对比内联 JSON 字符串
compare-json '{"a":1}' '{"a":2,"b":3}'

# 数组策略与大小写不敏感匹配
compare-json base.json contrast.json -a lcs -k -v

# 输出机器可读的 JSON
compare-json base.json contrast.json -j

# 将报告写入文件
compare-json base.json contrast.json -o diff.txt

选项

标志说明
-a, --array-compare-method数组对比策略:byIndex(默认)、lcs、unordered
-k, --key-case-insensitive键名大小写不敏感对比
-v, --value-case-insensitive字符串值大小写不敏感对比
--numeric-string-equals-number将数字字符串视为与数字相等
-j, --json-export以 JSON 格式输出差异
-o, --output FILE将输出写入文件而非标准输出

各选项的详细说明请参阅对比选项和数组对比方法。

许可证

MIT