": { "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解决方案

json
{
"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') 方法。
  • python
    # 假设 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 数据,明确其编码方式,并在序列化前进行正确的解码。