JSON结构差异

时间:2018-01-18 10:05:57

标签: python json

我需要仅针对键来比较JSON对象,而不是值。这些JSON对象可以是嵌套的,包含字典,数组和其他对象。请建议我这样做的有效方法。同样,我只需要比较两个JSON对象是否具有相同的键和相同的结构。

以下是示例JSON

第一个JSON

tbX

第二个JSON

@EJB(mappedName="YOUR_EAR_NAME/ManageStudentSessionBean/local")

上面的一对JSON,在比较时不应该有任何区别,因为它们具有相同的密钥。

1 个答案:

答案 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