注意:修改后的原始问题恰好可以证明我正在尝试做的事情
我有两个需要检查的JSON对象列表,例如“相同”。
x = [
{
"Id": "A",
"Type": "A",
"Component": "A",
"Level": "A",
"Debug": "A",
"Space": 1
},
{
"Id": "B",
"Type": "B",
"Component": "B",
"Level": "B",
"Debug": "B",
}
]
y = [
{
"Id": "B",
"Type": "B",
"Component": "B",
"Level": "B",
"Debug": "B",
},
{
"Id": "A",
"Type": "A",
"Component": "A",
"Level": "A",
"Debug": "A",
"Space": 1
}
]
出于我的目的,将这些对象归为同一类。
背景:我有无法控制的API返回的数据。我需要检查返回的数据是否与我拥有的预存储定义相同。如果相同,则两个列表包含相同数量的对象,并且包含相同的键,那么我需要返回True
。否则为False
。请注意,字典中的键可以采用不同的顺序。
到目前为止,我已经尝试过:
执行设置了json.dumps()
的{{1}}。这似乎只是对顶级对象进行排序,而没有深入到子对象中。
我还尝试过将对象sort_keys
移动到对象B上方的对象A。然后进行y
比较会返回x == y
。
基于以上所述,看起来内置的equals运算符期望对象以相同的顺序排序。因此,我认为可以根据True
然后再按Type
进行排序的方法可能是前进的方向。 Id
字段确定对象是否将包含Type
属性,在某些对象中添加该属性似乎表明排序很重要。
注1:性能并不重要。 注意2:我对Python不熟悉,因此不确定从工具箱使用哪个工具,或者是否内置了任何工具。
谢谢。
答案 0 :(得分:0)
Json只是序列化的对象,您可以使用json
模块和loads
或load
方法(取决于您的输入)将其加载到python dict中,然后仅使用{{1 }}运算符
==
请注意,您的json无效,我必须添加一些逗号