DeepDiff比对两个嵌套JSON时无差异输出的问题咨询
原因
DeepDiff 5.5.0版本默认开启ignore_private_attributes配置,该配置为True时会自动忽略所有键名以双下划线__开头的属性。你测试用的两个JSON顶级键__PythonResult__Modules符合双下划线开头规则,DeepDiff比较时直接跳过了该键下的全部内容,因此返回无差异结果。
解决方案
调用DeepDiff时显式关闭私有属性忽略开关即可正常识别差异,修改后的代码如下:
from deepdiff import DeepDiff item1 = { '__PythonResult__Modules': { 'b': { 'c': ['foo'] } } } item2 = { "__PythonResult__Modules" : { "global" : { "views" : { "from_python" : { "QDjl" : ["llll"] } } } } } diff_result = DeepDiff(item1, item2, ignore_private_attributes=False) print(diff_result)
如果你的场景中仍需要忽略其他私有属性,仅需保留当前键的比较,可通过exclude_regex_paths参数自定义排除规则,覆盖默认的正则匹配逻辑。
内容的提问来源于stack exchange,提问作者Flo Cp
相关产品推荐
相关产品推荐

