如何从requests响应的嵌套字典结构中提取expiry时间戳值
问题原因
你无法获取到expiry值的核心原因是字段嵌套层级匹配错误:
你给出的响应结构中,expiry并不在最外层字典下,它的完整层级是:
最外层字典 →
subscriptions键(对应值为列表) → 列表第1个元素(字典) →expiry键
你注释掉的data.get('expiry')是直接从最外层读取,自然无法命中目标字段。同时你现有代码中遍历查找info键的逻辑和你给出的响应结构不匹配,该响应不存在info字段,因此这部分代码不会输出任何内容。
可行解决方法
场景1:确定subscriptions列表永远只有1个订阅项
直接按层级读取即可,推荐使用get方法避免键不存在抛出异常:
# 基础写法,结构符合的情况下直接取值 expiry = data['subscriptions'][0]['expiry'] # 安全写法,即使结构缺失也不会直接报错,找不到会返回None expiry = data.get('subscriptions', [{}])[0].get('expiry')
场景2:subscriptions可能存在多个订阅项,需要取出所有expiry值
遍历subscriptions列表逐一读取:
expiry_values = [] for subscription_item in data.get('subscriptions', []): current_expiry = subscription_item.get('expiry') if current_expiry: expiry_values.append(current_expiry) # 此时expiry_values列表中存储了所有订阅对应的expiry值
场景3:增加异常处理,避免响应结构和预期不符导致程序崩溃
from datetime import datetime try: subscriptions = data['subscriptions'] if not subscriptions: print("未查询到订阅信息") else: # 取第一个订阅的expiry,需取全部可替换为遍历逻辑 expiry_timestamp = int(subscriptions[0]['expiry']) # 可选:将时间戳转为可读时间格式 expiry_readable = datetime.fromtimestamp(expiry_timestamp) print(f"订阅过期时间:{expiry_readable}") except (KeyError, IndexError, ValueError) as e: print(f"解析过期时间失败,错误原因:{str(e)}")
内容的提问来源于stack exchange,提问作者DeadFinder
相关产品推荐
相关产品推荐

