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

Python新手求助:无法从JSON输出中获取元素

解决JSON键访问时的TypeError问题

嘿,作为Python新手碰到这种问题太正常啦,我来帮你捋捋思路!你提到把API返回内容转成JSON后,用filed['name']访问时触发了TypeError,大概率是你默认filed是字典类型,但实际它的结构和你想的不一样——可能是列表、嵌套层级不对,甚至是变量名写错了。

给你几个具体的排查和解决步骤:

  • 先搞清楚JSON的真实结构
    别着急直接访问键,先把转成JSON后的完整数据打印出来看看。比如在调用response.json()或者json.loads()之后,加一行代码:

    import json
    print(json.dumps(your_json_data, indent=4))
    

    格式化后的输出会清晰展示整个数据的层级,你能一眼看到name字段到底在哪个位置,以及filed对应的是不是字典。

  • 排查最常见的坑:JSON最外层是列表
    很多API返回的JSON最外层是列表(比如[{"name": "xxx"}, {"name": "yyy"}]),如果你直接把整个返回结果赋值给filed,那它就是列表类型,自然不能用字符串下标访问。这时候需要先取列表里的元素,比如filed[0]['name'](如果目标数据在第一个位置的话)。

  • 检查变量名和嵌套层级
    有没有可能手滑打错了变量名?比如是不是field而不是filed?或者name藏在更深的嵌套里,比如filed['data']['details']['name']?打印完整结构后就能一目了然。

  • 补全报错信息更利于定位
    你贴的报错只显示到TypeError: st...,完整的错误提示会告诉你具体原因——比如TypeError: list indices must be integers or slices, not str说明filed是列表;TypeError: 'NoneType' object is not subscriptable说明filed是None值。如果能拿到完整报错,定位问题会更快。

举个简单的示例,如果API返回的JSON结构是这样:

[
  {
    "name": "FOA",
    "id": 1001
  }
]

那你的代码可以调整成这样:

import requests
import json

def get_FOA():
    # 调用API
    response = requests.get("你的API地址")
    # 转成JSON
    json_data = response.json()
    # 先打印确认结构
    print(json.dumps(json_data, indent=4))
    # 因为最外层是列表,先取第一个元素
    filed = json_data[0]
    # 再访问name字段
    print(filed['name'])

get_FOA()

先按上面的步骤排查下JSON结构,应该就能找到问题所在啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:29:19