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

Python访问JSON遇TypeError,Flask环境运行崩溃的技术咨询

JSON访问错误及Flask环境差异问题

场景说明

目标JSON结构:

{
  "records": {
    "expiryDates": [
      "date1",
      "date2"
    ]
  }
}

用户的API调用代码:

import requests
import json

r = requests.get(url, headers)
dataJSON = json.loads(r.text)

尝试通过dataJSON["records"]["expiryDates"]获取数据时,触发错误:TypeError: string indices must be integers, not 'str'


问题解答

1. 直接访问方式是否为最优方法?

直接通过键路径dataJSON["records"]["expiryDates"]是高效且最优的访问方式,前提是你能确认JSON结构稳定,records和expiryDates两个键必然存在且层级正确。报错的核心原因并非这种访问方式本身有问题,而是你实际解析得到的dataJSON或其下的records不是字典类型,而是字符串——此时用字符串作为索引自然会触发类型错误。

2. 独立运行正常但Flask中崩溃的原因?

大概率是Flask环境下API返回的内容和独立脚本中不同,常见触发点包括:

  • 请求头不一致:Flask中发送请求时的headers和独立脚本的配置有差异,导致API返回非预期内容(比如错误提示、HTML页面而非目标JSON),解析后得到的是字符串而非嵌套字典。
  • API动态响应逻辑:API可能根据请求的来源、频率等返回不同内容,Flask应用的请求触发了API的限流、验证失败等机制,返回了错误字符串,而非正常的JSON结构。
  • 环境依赖差异:Flask应用和独立脚本使用的requests版本不同,部分旧版本在编码或响应处理上存在bug,导致r.text的内容无法被正确解析为预期的字典。
  • Flask上下文干扰:在Flask请求处理流程中,可能存在中间件或自定义代码修改了请求响应的内容,导致r.text被意外篡改,解析后结构异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:07:26