Python中如何处理空JSON响应并避免代码执行中断?
实现逻辑与代码示例
你需要覆盖「HTTP请求异常」「空响应/非JSON格式响应」「返回内容无Data字段」「Data字段为空」四类可能导致程序崩溃的场景,完整实现代码如下:
import requests getsomething = requests.get("https://url of api") try: # 校验HTTP请求是否成功,拦截4xx、5xx类错误 getsomething.raise_for_status() # 解析JSON响应,空响应会触发JSON解析异常,直接进入异常分支 res_data = getsomething.json() # 用get方法读取字段,避免无Data字段时报错,同时判断字段是否非空 if res_data.get("Data"): print(res_data["Data"]) else: print("Nothing Found In the api Request") # 统一捕获所有请求、解析相关的异常做兜底 except requests.exceptions.RequestException: print("Nothing Found In the api Request")
逻辑说明
response.raise_for_status()会自动判断HTTP响应状态码,遇到请求失败的情况直接抛出异常,不需要手动判断status_code- 用字典的
get()方法读取Data字段,字段不存在时会默认返回None,不会触发KeyError - 外层异常捕获覆盖了网络错误、空响应JSON解析失败、请求超时等所有极端情况,不会导致程序直接终止
内容的提问来源于stack exchange,提问作者Mr Dream
相关产品推荐
相关产品推荐

