": { "message": "Object of type bytes is not JSON serializable (request id: 2025...

2025年10月22日 12:30 响应: 4.13秒 状态: success

🚨 错误信息

{ "error": { "message": "Object of type bytes is not JSON serializable (request id: 20251022122848644412664d0O1jEfe)", "type": "openai_error", "param": "", "code": "unknown_error" } }

🤖 AI解决方案

{
    "error": {
        "message": "Object of type bytes is not JSON serializable",
        "type": "openai_error",
        "param": "",
        "code": "unknown_error"
    }
}

  • 错误翻译: bytes 类型对象不可 JSON 序列化。
  • 原因分析: 你试图将一个 bytes 类型的数据直接进行 JSON 序列化,而 JSON 标准不支持 bytes 类型。
  • 解决方案: 在序列化之前,将 bytes 类型数据解码为字符串。例如,如果你的 bytes 数据是 UTF-8 编码的,可以使用 .decode('utf-8') 方法。
  •     # 假设 data_in_bytes 是你的 bytes 类型数据
        data_in_bytes = b'{"key": "value"}'
        try:
            # 尝试直接序列化(会导致错误)
            # import json
            # json.dumps(data_in_bytes)
            pass
        except TypeError as e:
            print(f"发生错误: {e}")
    
        # 正确的解决方案
        try:
            data_as_string = data_in_bytes.decode('utf-8')
            json_output = json.dumps(data_as_string)
            print(f"JSON 序列化成功: {json_output}")
        except Exception as e:
            print(f"解码或序列化时发生错误: {e}")
    
        # 如果 bytes 是其他格式(例如 base64 编码的 JSON)
        import base64
        import json
    
        # 示例:base64 编码的 JSON 字符串
        encoded_json_string = base64.b64encode(b'{"message": "hello"}')
        # encoded_json_string 是 bytes 类型
        print(f"原始 base64 encoded bytes: {encoded_json_string}")
    
        try:
            decoded_bytes = base64.b64decode(encoded_json_string)
            decoded_string = decoded_bytes.decode('utf-8')
            json_data = json.loads(decoded_string) # 使用 json.loads 解析 JSON 字符串
            print(f"解析后的 JSON 数据: {json_data}")
        except Exception as e:
            print(f"处理 base64 编码数据时发生错误: {e}")
    
        

  • 预防措施:

1. 在处理数据时,养成检查数据类型的好习惯,确保要进行 JSON 序列化的对象是可支持的类型(如字典、列表、字符串、数字、布尔值、None)。
2. 对于来自外部系统或需要传输的 bytes 数据,明确其编码方式,并在序列化前进行正确的解码。