原正常运行的Pandas read_json脚本现报TypeError,如何排查?
问题排查与解决方法
错误直接原因
pd.read_json() 要求传入文件路径、文件对象或字符串,但你当前传入的是bytes类型(URLresponse.content返回字节数据),这就是触发TypeError的核心原因。
排查与修复步骤
先确认接口请求状态与返回内容
- 打印
URLresponse.status_code,确认请求是否成功(正常应为200)。如果是4xx/5xx状态码,说明接口调用失败,返回的可能是错误页面(如HTML)而非预期JSON。 - 打印
URLresponse.text,检查返回内容是否为合法JSON格式。若返回非JSON内容,需排查接口端是否有变更。
- 打印
修正数据类型适配问题
以下三种方法任选其一即可:- 使用
response.text获取字符串格式响应:rawdata = URLresponse.text df = pd.read_json(rawdata) - 直接用requests内置的
json()方法解析响应,再转DataFrame(更高效):rawdata = URLresponse.json() df = pd.DataFrame(rawdata) - 将字节数据解码为字符串(需确保编码与接口返回一致,通常为utf-8):
rawdata = URLresponse.content.decode('utf-8') df = pd.read_json(rawdata)
- 使用
验证JSON结构兼容性
若接口返回的JSON结构发生变更(比如从数组变为嵌套字典),即使是合法JSON,pd.read_json()也可能解析失败。此时需打印rawdata查看结构,调整DataFrame的生成逻辑(比如针对嵌套结构使用pd.json_normalize())。检查依赖版本变化
若此前正常运行,近期更新过pandas或requests,可能存在版本兼容性问题。可通过print(pd.__version__)查看当前版本,对比之前的稳定版本,必要时回退到兼容版本。
内容的提问来源于stack exchange,提问作者opperman.eric
相关产品推荐
相关产品推荐

