如何从Python Response对象打印JSON中temp键的值?报错求助
解决Python获取JSON数据时读取"temp"键报错的问题
嘿,我来帮你搞定这个问题!从你描述的情况来看,报错大概率出在JSON数据解析或者键路径不正确这两个环节,咱们一步步排查:
第一步:先确认请求是否成功,响应是否为有效JSON
很多时候报错是因为请求没成功(比如返回404/500错误),网站返回的不是JSON而是错误页面,这时候解析JSON肯定会失败。你可以先在simple_get里加一些调试信息:
import requests def simple_get(url): response = requests.get(url) # 先检查请求状态码,200代表成功 print(f"请求状态码: {response.status_code}") # 打印前500个字符的原始响应,看看是不是真的JSON print(f"原始响应片段: {response.text[:500]}") return response # 调用函数,替换成你的目标URL resp = simple_get("https://your-target-url.com")
如果状态码不是200,那得先解决请求失败的问题(比如检查URL是否正确、有没有需要的请求头、是否需要代理等);如果原始响应是HTML代码,那说明网站没返回JSON,得调整请求方式或者确认接口地址。
第二步:检查JSON结构,确认"temp"键的位置
如果请求成功且是有效JSON,那可能是你找错了"temp"的位置——很多JSON数据是嵌套结构,比如temp可能在weather或者data这样的子对象里,直接取json_data["temp"]就会报KeyError。
你可以先把整个JSON结构打印出来看看:
from pprint import pprint # 用pprint会让结构更清晰 json_data = resp.json() pprint(json_data)
比如打印出来的结构是这样的:
{ "status": "success", "data": { "weather": { "temp": 28, "humidity": 60 } } }
那你就得逐层获取:json_data["data"]["weather"]["temp"],而不是直接取json_data["temp"]。
第三步:加上异常处理,让程序更健壮
为了避免程序直接崩溃,建议在解析和取值的时候加上异常捕获:
try: json_data = resp.json() # 根据实际结构调整键的路径 temp_value = json_data["data"]["weather"]["temp"] print(f"当前温度: {temp_value}") except ValueError as e: print(f"解析JSON失败啦:{e},可能返回的不是有效JSON") except KeyError as e: print(f"找不到键 {e} 哦!请检查JSON结构里有没有这个键,或者路径是否正确")
按照这个流程排查,应该就能解决问题啦!
内容的提问来源于stack exchange,提问作者nikhil
相关产品推荐
相关产品推荐

