我正在使用一个名为jsondiff的模块来比较两个json文件之间的更改。当检测到更改时,它将返回一个字典。字典键是来自模块的类的实例
根据更改的类型(新添加、删除或更改的内容),字典键的名称不同,但似乎是同一类的实例
我试图检查实例是否等于某种类型的更改。如何编写条件来检查密钥的名称
下面是一个示例:json文件1
[{
"first": "John",
"last": "Smith",
"membership": "general"
},
{
"first": "Jane",
"last": "Dogood",
"membership": "VIP"
}]
json文件2
[{
"first": "John",
"last": "Smith",
"membership": "VIP"
},
{
"first": "Jane",
"last": "Dogood",
"membership": "VIP"
},
{
"first": "Robert",
"last": "Jones",
"membership": "VIP"
}]
Python代码
with open("/file1.json") as f1, open("/file2.json") as f2:
data1 = json.load(f1)
data2 = json.load(f2)
changes = jsondiff.diff(data1, data2)
for key, val in changes.items():
print(key, val)
print(type(key))
if key == "insert": # also tried "$insert", and insert without quotes
# Do something
输出:
0 {'membership': 'VIP'}
<class 'int'>
$insert [(2, {'first': 'Robert', 'last': 'Jones', 'membership': 'VIP'})]
<class 'jsondiff.symbols.Symbol'>
简单。键的类型为
jsondiff.symbols.Symbol
。然而,当它被打印时,我们知道它返回$insert
。因此,答案是简单地将密钥包装在str()
中或者直接去
insert
不是符号类的键。它是jsondiff.symbols
脚本的一个属性。实际上,所有符号都是Symbol
类的一个实例,因此,直接担心Symbol
是浪费时间jsondiff.symbols.py
相关问题 更多 >
编程相关推荐