Python中如何检查API GET请求响应中是否存在指定JSON值
问题修复方案
你的代码无法运行主要有两个核心问题,对应修复逻辑如下:
- 变量名不匹配:你将接口JSON解析结果赋值给了
response变量,后续判断时却写了res,运行时会触发变量未定义的报错。 - 缺少基础的请求、响应校验:直接调用
.json()没有提前判断请求是否成功、响应是否为合法JSON格式,遇到接口报错、返回非JSON内容时会直接抛异常。
场景1:判断响应顶层键是否存在Tom
修正变量名,加上基础异常捕获即可:
import requests try: req = requests.get('MYAPI', timeout=10) # 校验请求状态码,4xx/5xx时直接抛错 req.raise_for_status() response = req.json() except Exception as err: print(f"请求异常: {err}") else: # 变量名和赋值保持一致 if 'Tom' in response: print('Welcome')
场景2:判断响应中某个键对应的值为Tom
如果你的目标不是判断键名,而是判断某个字段的取值是不是Tom,需要先取到对应字段的值再判断,避免直接遍历顶层结构匹配不到:
import requests try: req = requests.get('MYAPI', timeout=10) req.raise_for_status() response = req.json() except Exception as err: print(f"请求异常: {err}") else: # 示例1:判断name字段的值是否等于Tom,get方法找不到键时默认返回None,不会触发KeyError if response.get('name') == 'Tom': print('Welcome') # 示例2:如果Tom在嵌套的列表字段里,比如返回结构为 {"user_list": ["Tom", "Jerry"]} # if 'Tom' in response.get('user_list', []): # print('Welcome')
注意:如果接口返回的是多层嵌套的JSON结构,需要顺着层级逐层取值后再做判断,不要直接在顶层对象用
in做全局匹配。
内容的提问来源于stack exchange,提问作者liyas
相关产品推荐
相关产品推荐

