判断一个json是否包含另一个json

文章描述了一个名为is_json_contained的函数,用于检查两个JSON对象是否具有相同的结构和内容,包括嵌套的字典和列表。该函数通过递归遍历和对比键值对来确定两个JSON是否相等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def is_json_contained(json1, json2):
    if isinstance(json1, dict) and isinstance(json2, dict):
        for key, value in json2.items():
            if key not in json1 or json1[key] != value:
                return False
            if isinstance(value, dict):
                if not is_json_contained(json1[key], value):
                    return False
        return True
    elif isinstance(json1, list) and isinstance(json2, list):
        for item in json2:
            if item not in json1:
                return False
            if isinstance(item, dict):
                if not any(is_json_contained(subitem, item) for subitem in json1):
                    return False
        return True
    else:
        return json1 == json2

# 示例用法
json1 = {
    "name": "John",
    "age": 30,
    "address": {
        "city": "New York",
        "zip": "10001"
    },
    "tags": ["python", "programming", "data"]
}

json2 = {
    "name": "John",
    "address": {
        "city": "New York",
        "zip": "10001"
    }
}

result = is_json_contained(json1, json2)
print(result)  # 输出 True

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值