python实现判断json是否存在某个key

具体代码如下:

class checkJSON(object):
    def getKeys(self,data):
        keysAll_list = []
        def getkeys(data):  # 遍历json所有key
            if (type(data) == type({})):
                keys = data.keys()
                for key in keys:
                    value = data.get(key)
                    if (type(value) != type({}) and type(value) != type([])):
                        keysAll_list.append(key)
                    elif (type(value) == type({})):
                        keysAll_list.append(key)
                        getkeys(value)
                    elif (type(value) == type([])):
                        keysAll_list.append(key)
                        for para in value:
                            if (type(para) == type({}) or type(para) == type([])):
                                getkeys(para)
                            else:
                                keysAll_list.append(para)
        getkeys(data)
        return keysAll_list

    def isExtend(self,data,tagkey):   #检测目标字段tagkey是否在data(json数据)中
        if(type(data)!=type({})):
            print('please input a json!')
        else:
            key_list=self.getKeys(data)
            for key in key_list:
                if(key==tagkey):
                    return True
        return False

if __name__ == '__main__':
    cjson=checkJSON()
    data={
    "code": 0,
    "msg": "ok",
    "data": {
        "list": [
            {
                "stock_id0": "601318.SH",
                "stock_code0": "601318",
                "stock_name0": "中国平安",
            },{
                "stock_id1": "600000.SH",
                "stock_code1": "600000",
                "stock_name1": "浦发银行",
            }
        ]
    },
     "pass":{
                "stock_id2": "600000.SH",
                "stock_code2": "600000",
                "stock_name2": "浦发银行",
            },
    "call_stack": ""
}
    list=cjson.getKeys(data)
    print(list)
    print(cjson.isExtend(data,'stock_name0'))

测试结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈希哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值