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

使用Requests调用Python API时如何忽略JSON中的null值?

解决TypeError: 'NoneType' object is not subscriptable问题

你的报错原因是代码中尝试对None值使用下标访问(比如[]),大概率是返回的JSON里部分a["links"]为null,或者a["attributes"]为null,导致执行下标操作时触发错误。下面给你三种具体的解决方法,按需选择:

方案1:替换Null值为默认值(不跳过条目)

用字典的get()方法给可能为None的字段设置默认值,既保留条目,又避免报错:

import requests
all_data = []
api_url = 'https://api.nfz.gov.pl/app-umw-api/agreements?page={}&limit=25&format=json&api-version=1.2&serviceType=03&year=2017&branch=07'

for page in range(0, 17):
    data = requests.get(api_url.format(page)).json()

    for a in data["data"]["agreements"]:
        # 若attributes为None,用空字典替代;若links为None或没有related,用'n/a'替代
        all_data.append({
            **(a.get("attributes", {})), 
            "link": a.get("links", {}).get("related", "n/a")
        })
print(all_data)

方案2:直接跳过存在Null值的无效条目

如果不需要保留有问题的条目,可以先做条件判断,只处理符合要求的数据:

import requests
all_data = []
api_url = 'https://api.nfz.gov.pl/app-umw-api/agreements?page={}&limit=25&format=json&api-version=1.2&serviceType=03&year=2017&branch=07'

for page in range(0, 17):
    data = requests.get(api_url.format(page)).json()

    for a in data["data"]["agreements"]:
        # 检查attributes和links不为空,且links里有related字段
        if a.get("attributes") is not None and a.get("links") is not None and "related" in a["links"]:
            all_data.append({**a["attributes"], "link": a["links"]['related']})
        else:
            # 可选:打印跳过的条目,方便排查
            print(f"跳过无效条目:{a}")
print(all_data)

方案3:用异常捕获兜底处理所有可能的错误

如果不确定还有哪些字段可能出问题,用try-except捕获异常,保证程序不中断:

import requests
all_data = []
api_url = 'https://api.nfz.gov.pl/app-umw-api/agreements?page={}&limit=25&format=json&api-version=1.2&serviceType=03&year=2017&branch=07'

for page in range(0, 17):
    data = requests.get(api_url.format(page)).json()

    for a in data["data"]["agreements"]:
        try:
            all_data.append({**a["attributes"], "link": a["links"]['related']})
        except (TypeError, KeyError) as e:
            # 捕获None下标访问、字段不存在的错误
            print(f"处理条目失败:{a},错误信息:{e}")
            continue  # 跳过当前条目,继续处理下一个
print(all_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:20:30