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

Python3中字节响应转JSON报错:'str'对象无'read'属性

问题分析与解决方案:'str' object has no attribute 'read' 错误

错误原因

你碰到的这个报错本质是对Python的json模块里两个方法的使用场景搞混了:

  • json.load() 是为文件对象设计的,它要求传入一个具备 .read() 方法的流对象(比如用open()打开的文件句柄),所以当你把解码后的字符串传给它时,程序自然会抛出“字符串没有read属性”的错误。
  • 而你通过response.decode('utf-8')得到的是一个JSON格式的字符串,这种场景下应该用**json.loads()**——这个方法就是专门用来解析字符串形式的JSON数据的。

修正后的代码

只需要把代码里的json.load(response)替换成json.loads(response)就能解决问题,完整代码如下:

import json
import logging

LOGGER = logging.getLogger(__name__)

response = b'{"message": "test msg 3"}'
try:
    response = response.decode('utf-8')
    LOGGER.info(response)
    data = json.loads(response)  # 替换为loads方法
    message = data["message"]
    print(f"成功获取消息:{message}")
except AttributeError as err:
    message = "Message not delivered..."
    LOGGER.warning(err)

额外小技巧

如果你的字节响应来自网络请求(比如使用requests库),其实可以直接调用响应对象的.json()方法,一步完成解码和解析,代码会更简洁:

# 假设response是requests.get()返回的响应对象
data = response.json()
message = data["message"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:42