🗒️python递归查询深层嵌套的json
2023-10-21
| 2023-10-21
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
网上查到的方案只能处理简单的json数据,根据某方案做的改良,主要是增加了value是json字符串的逻辑。
💡
既然是递归,那就会一直查询下去,若存在重复key,value会被不断刷新,以最后一次为准,故需要取重复key值的情况不适用。
import json #配合extract_keys判断value是json字符串的情况,一般是深层嵌套的json def is_json(myjson): try: json.loads(myjson) except ValueError: return False return True #递归查询主逻辑 def extract_keys(data, keys_to_extract): extracted_data = {} if isinstance(data, dict): for key, value in data.items(): if key in keys_to_extract: extracted_data[key] = value elif isinstance(value, (dict,list)): nested_data = extract_keys(value, keys_to_extract) extracted_data.update(nested_data) elif isinstance(value, (str)): #复杂的嵌套用得上,简单的json可以删除 if is_json(value): str_tmp = json.loads(value) nested_data = extract_keys(str_tmp, keys_to_extract) extracted_data.update(nested_data) elif isinstance(data, list): for item in data: nested_data = extract_keys(item, keys_to_extract) extracted_data.update(nested_data) return extracted_data
 
技术
  • Python
  • python sso爬虫登陆且并发获取数据容器CPU飙升的排查
    目录