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

Python解析嵌套JSON:提取Item与URL字段遇KeyError问题

解决JSON解析:提取URL与修复KeyError:0问题

嘿,我来帮你搞定这个JSON解析的麻烦事儿!先理清楚你遇到的两个问题:提取URL失败,还有取subscriptions时的KeyError:0,咱们一步步来解决。

先搞懂KeyError:0的原因

你遇到的KeyError: 0,大概率是因为subscriptions是字典类型,而不是你以为的列表。当你用subscriptions[0]去访问时,Python会把0当作字典的键去查找,但你的字典里根本没有这个键,所以就报错啦。

先确认JSON结构(关键!)

首先建议你先把整个payload的结构打印出来,这样能清晰看到每个字段的层级:

import json

# 假设你已经把JSON字符串加载成了字典
payload_data = json.loads(your_json_content)
# 格式化打印结构,方便查看层级
print(json.dumps(payload_data, indent=2))

比如打印后可能看到类似这样的结构(我根据你的问题推测的常见情况):

{
  "payload": {
    "Item1": "xxx",
    "Item2": "yyy",
    "subscriptions": {
      "url": "https://your-target-url.com",
      "other_info": "zzz"
    }
  }
}

提取URL的正确方式

根据上面的结构,URL在payload -> subscriptions -> url层级下,所以提取代码应该是:

# 提取目标URL
target_url = payload_data['payload']['subscriptions']['url']

如果你的subscriptions其实是列表(比如包含多个订阅项),那结构可能是这样:

{
  "payload": {
    "Item1": "xxx",
    "Item2": "yyy",
    "subscriptions": [
      {
        "url": "https://first-url.com",
        "name": "sub1"
      },
      {
        "url": "https://second-url.com",
        "name": "sub2"
      }
    ]
  }
}

这种情况下,要提取第一个订阅的URL,得先判断列表不为空,再用索引访问:

subscriptions_list = payload_data['payload']['subscriptions']
if subscriptions_list:
    first_url = subscriptions_list[0]['url']
else:
    print("没有找到订阅项哦")

额外小技巧:更安全的提取方式

如果怕字段不存在导致报错,可以用字典的get方法,给个默认值兜底:

# 即使subscriptions或url不存在,也不会报错,会返回默认值
safe_url = payload_data['payload'].get('subscriptions', {}).get('url', '未找到URL')

内容的提问来源于stack exchange,提问作者tweeks200

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:16:32