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