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

Python如何从REST接口JSON响应中提取m:instrumentId的#value值

报错根因

这个TypeError: list indices must be integers or slices, not str错误的本质是:你尝试用字符串Key直接索引列表类型的JSON节点,你预期为字典的某个JSON层级实际是数组,必须先指定数组下标才能继续提取下层字段。

正确提取方案

这类带m:前缀、#value字段的JSON通常是OData类接口的返回,通用结构如下:

{
  "value": [
    {
      "m:instrumentId": {
        "#value": "目标ID值"
      },
      // 其他字段
    },
    // 更多数组元素
  ]
}

提取代码示例

如果你用requests库发起请求,参考如下代码:

import requests

# 发起接口请求并转成Python字典
resp = requests.get("你的REST接口地址")
json_data = resp.json()

# 提取列表第一个元素的m:instrumentId#value值
target_id = json_data["value"][0]["m:instrumentId"]["#value"]
print(target_id)

# 如果要提取列表中所有元素的对应值,直接遍历即可
all_ids = [item["m:instrumentId"]["#value"] for item in json_data["value"]]
print(all_ids)

层级调试技巧

如果你的JSON结构和上述示例不一致,可以逐层打印节点类型定位列表位置,再调整下标:

# 逐层打印节点类型,找到列表所在层级
print(type(json_data))
print(type(json_data["你要查的第一层key"]))
# 遇到list类型时,先取下标再继续向下查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:08