You need to enable JavaScript to run this app. Python处理JSON报String indices must be integers错,如何取role中John名称
优惠活动
大模型
产品
解决方案
定价
更多

Python处理JSON报String indices must be integers错,如何取role中John名称

报错原因&修复方案

触发报错的核心问题

  • 你将json.loads()解析得到的Python原生字典,通过json.dumps()转成了格式化字符串后赋值给data。字符串仅支持整数索引取值,传入字符串键值就会抛出String indices must be integers错误。
  • 索引路径不符合JSON结构:接口返回的data是数组(对应Python列表),不是字典,不能直接按data['role']取数,必须先用整数索引拿到列表内的字典元素,再取对应字段。

可直接运行的修复代码

r = requests.request("GET", url, params=payload)
# 直接调用requests内置的json方法解析响应,无需手动处理r.text
resp_data = r.json()
# 按层级取值:data列表第0个条目下的role.name字段
target_role_name = resp_data['data'][0]['role']['name']
print(target_role_name) # 输出为John

操作说明

  • 不要混淆json模块的两个核心方法用途:
    • json.loads():将JSON字符串反序列化为Python可操作的字典/列表,仅在需要手动解析文本响应时使用
    • json.dumps():将Python原生结构序列化为格式化的JSON字符串,仅用于打印调试、文件存储场景,不能用于取值索引
  • 如果data列表包含多条条目,需要筛选所有role.name为John的内容,可使用列表推导式遍历:
# 筛选所有符合条件的role条目
matching_roles = [item['role'] for item in resp_data['data'] if item['role'].get('name') == 'John']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 01:45:03