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

Python如何从接口返回的JSON数组中提取指定键值对

问题根源

你的代码有两处错误直接导致报错:

  • 未对接口返回的JSON做解析:response.text得到的是原始JSON格式字符串,不是Python可直接按键索引的字典/列表对象。对字符串用[0]只会取到整个字符串的第一个字符{,后续再用字符串形式的key去索引字符,必然触发TypeError: string indices must be integers。
  • 层级索引顺序错误:你要找的Id字段存储在value键对应的单元素数组内,并非在最外层结构的第0位。哪怕你提前把JSON解析成了字典,直接对最外层字典用[0]索引也会报错——字典的键是@odata.context、value这类字符串,不存在数字0对应的键值。
修复方案

直接用requests库内置的json()方法自动解析响应为Python结构化对象,再按正确层级取值即可:

import requests

response = requests.request("GET", url, headers=headers)
# 自动解析JSON响应为Python字典
data = response.json()
# 按层级取值:最外层字典 -> value键(得到数组)-> 数组第0位(单条记录字典)-> Id键
record_id = data['value'][0]['Id']
print(record_id)

运行后会输出你要的结果:02cb9c0f-89ca-46fd-882e-5d770d7da214

对应你给出的JSON结构,层级对应关系如下:

  1. 最外层是字典,包含@odata.context、value两个键
  2. value对应的值是长度为1的数组,所有查询到的记录都存在这个数组里
  3. 数组索引从0开始计数,因为你用唯一键查询只会返回1条结果,所以取[0]就能拿到目标记录的字典,再从中提取Id即可

如果需要兼容偶发的空返回场景,避免索引越界报错,可以加一层简单判断:

data = response.json()
record_list = data.get('value', [])
if record_list:
    record_id = record_list[0]['Id']
    print(record_id)
else:
    print("未查询到匹配的记录")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:45:38