Python:获取json之间对象名和子对象的差异列表

2021-05-16 06:39:46 发布

您现在位置:Python中文网/ 问答频道 /正文

python新手:

json1.json文件

{
    "key1": {
        "s11": 1,
        "s12": 2,
        "s13": "abc"
    },

    "key2": {
        "s21": [1, 2, 3, 4],
        "s22": {
            "s221": {
                "s2211": "abc"
            }
        }
    },
    "key3": "name1"
}

json2.json文件

{
    "key1": {
        "p12": 2,
        "p13": "abc",
        "s11": 1
    },

    "key2": {
        "ps22": {
          "ps221": {
            "ps2211": "abc"
          }
        },
        "ps21": ["1", "2", "3", "4"],
        "ps23" : "abc",
        "ps24":1,
        "s21": [1,2,3,4]
    }
}

我试图比较两个json对象名:json1.json和json2.json,并列出对象名之间的差异
例如,列出以下差异
1json1中存在的json2中缺少key3-->;使用下面的代码获取此项
2键2.s22更改为键2.ps22,键1.s12更改为键1.p12
三。不会干扰key2.s22.s221.s2211与key2.ps22.ps2211.ps2211不同的key2.s22.s2211,因为它们希望捕获初始层次结构差异

有人能帮我用适当的方法或命令来捕捉这些差异吗?你知道吗

我可以用下面的代码得到对象名的不同。你知道吗

d1=json.load(open("json1.json"))
d2=json.load(open("json2.json"))
s1=set(d1.keys()) - set(d2.keys())
print(s1)

o/p->;{'key3'}

但我的要求是在下一级层次结构中获得差异,即
键2.s22更改为键2.ps22
键2.s21更改为键2.ps21