You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:15:05