如何获取接口JSON响应而非响应状态码?打印仅返回200状态的问题咨询
解决requests调用Peakon接口仅返回状态码、无法获取JSON数据的问题
嘿,我懂你遇到的问题——用requests调用Peakon接口后,print(response)只输出<Response [200]>,压根看不到想要的JSON结构对吧?这是因为你打印的是Response对象本身,而不是接口返回的实际响应体内容。
下面给你具体的解决步骤和优化后的代码:
核心解决方法:使用response.json()解析响应
requests库的Response对象提供了json()方法,可以直接把符合JSON格式的响应体解析成Python字典/列表,这正是你需要的。
修改后的完整代码
headers = { 'accept': 'application/json', 'Authorization': 'Bearer 123456789', } params = ( ('interval', 'month'), ) # 发起请求 response = requests.get('https://api.peakon.com/v1/engagement/overview', headers=headers, params=params) # 先验证请求是否成功 if response.status_code == 200: # 解析JSON响应 json_response = response.json() # 现在就能看到完整的JSON结构了 print(json_response) else: print(f"请求出错啦,状态码: {response.status_code}")
额外的排查与优化技巧
- 处理JSON解析失败的情况:如果接口返回的不是合法JSON(虽然你设置了
accept: application/json,但偶尔可能有意外),response.json()会抛出JSONDecodeError,可以加个异常捕获来排查:
try: json_response = response.json() print(json_response) except ValueError as e: print(f"解析JSON失败: {str(e)}") # 打印原始响应内容,看看到底返回了什么 print("原始响应内容:", response.text)
- 查看原始响应文本:如果不确定响应内容,也可以用
response.text直接打印原始的响应字符串,方便排查格式问题。
简单来说,print(response)只是输出Response对象的基本状态信息,而response.json()才是获取并解析接口返回的JSON数据的正确方式~
内容的提问来源于stack exchange,提问作者Arron
相关产品推荐
相关产品推荐

