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

Python解析Slack API嵌套JSON键触发TypeError问题求解

问题排查与修复

错误1:保留[0]时提示TypeError: string indices must be integers

原因:json.loads(response.text)['members']本身就是所有用户组成的列表,你加了[0]之后data就变成了第一个用户的字典对象,遍历字典的时候i拿到的是字典的键(都是字符串,比如id、name),你用i['id']相当于对字符串做字典索引操作,自然报错。
修复:直接取data = json.loads(response.text)['members'],不要加[0]。

错误2:移除[0]后提示TypeError: 'builtin_function_or_method' object is not subscriptable

原因:你写了print[i],print是Python内置函数,方括号[]是下标取值操作,不能用在函数上。
修复:改成print(i),用圆括号传参调用函数。

其他隐藏问题

  • 请求异常时只打印错误,后续仍然访问response.text会触发NameError,因为请求失败时response变量未定义,建议加return终止函数执行
  • 建议先判断Slack API返回的ok字段是否为真,避免接口调用失败时找不到members字段

修复后完整代码

import requests
import json

def get_slackusers():
    uri = "https://slack.com/api/users.list?token=tokenhere"

    try:
        response = requests.get(uri)
    except requests.exceptions.RequestException as error:
        print(error)
        return  # 请求失败直接终止
    
    res_json = json.loads(response.text)
    # 先判断接口调用是否成功
    if not res_json.get('ok'):
        print(f"接口调用失败:{res_json.get('error', '未知错误')}")
        return
    
    data = res_json['members']
    target_id = 'slackIDhere'
    for user in data:
        if user['id'] == target_id:
            print(user)
            return user  # 找到后可以直接返回,避免继续循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:12:03