json递归查询

主体:
class json_search():
    '''递归查询依赖key'''
    def search_key(self,data,key):
        self.data = data
        self.key_value = []
        if self.data_json(data) != False:
            self.search(self.data,key)
            return  self.key_value
        else:
            return False

    def data_json(self,data):
        ''' 入参判断'''
        '''json是str子类'''
        if isinstance(data,str):
            try:
                self.data=json.loads(data,encoding='utf-8')
            except ValueError :
                print("value error input")
                return False
        elif isinstance(data,dict):
            return self.data
        else:
            return False

    def search(self,data,key):
        for i in data:
            if i == key:
                self.key_value.append(data[i])
            elif isinstance(data[i],dict):
                self.key_value.append(data[i].get(key))
            elif isinstance(data[i],list):
                for j in data[i]:
                    self.search(j,key)
        return self.key_value 
示例:
search_json=json_search()
data={
"api3/getbanneradvertver2":[
{"10016":"token error"},
{"1006":"用户名错误"},
{"1006":"密码错误"},
{"1000": "成功"}
],
"api3/beta4":[
{"1006":"登陆成功"},
{"1006":"用户名错误"},
{"1006":"密码错误"}
],
"api3/getcourseintro":[
{"1006":"token error"},
{"1006":2022},
{"10001":"用户名错误"},
{"10002":[{"100092":"9"}]
}
],
"/api3/getads":[
{"1000":"成功"}
]
}
if __name__ == "__main__":
print(search_json.search_key(data,"1000"))

猜你喜欢

转载自www.cnblogs.com/cyanrose/p/11596598.html
今日推荐