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
相关产品推荐
相关产品推荐

