我需要仅针对键来比较JSON对象,而不是值。这些JSON对象可以是嵌套的,包含字典,数组和其他对象。请建议我这样做的有效方法。同样,我只需要比较两个JSON对象是否具有相同的键和相同的结构。
以下是示例JSON
第一个JSON
tbX
第二个JSON
@EJB(mappedName="YOUR_EAR_NAME/ManageStudentSessionBean/local")
上面的一对JSON,在比较时不应该有任何区别,因为它们具有相同的密钥。
答案 0 :(得分:0)
首先,示例JSON不是有效的JSON,因为JSON中的键必须包含在"
中。
但是,如果您有两个有效的JSON字符串,则可以将它们解析为字典,然后使用此函数比较字典的结构:
def equal_dict_structure(dict1, dict2):
# If one of them, or neither are dictionaries, return False
if type(dict1) is not dict or type(dict2) is not dict:
return False
dict1_keys = dict1.keys()
dict2_keys = dict2.keys()
if len(dict1_keys) != len(dict2_keys):
# If they don't have the same amount of keys, they're not the same
return False
for key in dict1_keys:
if key not in dict2_keys:
return False
dict1_value = dict1[key]
dict2_value = dict2[key]
if type(dict1_value) is dict:
# If inner dictionary found, assert equality within inner dictionary
if not equal_dict_structure(dict1_value, dict2_value):
return False
# No inequalities found
return True