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

使用API POST请求上传媒体失败,报JSON序列化错误

问题分析及解决方法

错误原因

你遇到的类型错误:BufferedReader类型的对象无法序列化为JSON,根源在于两点:一是你把open()返回的文件流对象(BufferedReader)放进了JSON结构里,但JSON格式不支持序列化这类二进制流对象;二是上传媒体文件的正确格式并非JSON,而是multipart/form-data。

解决步骤

  • 删掉请求头里的content-type: application/json,用requests上传文件时,它会自动生成正确的multipart/form-data请求头。
  • 拆分文本数据和文件:把templateData转成JSON字符串单独传递,文件作为独立的表单字段提交。

修正后的代码示例

import json

# 先整理文本数据,转成JSON字符串
template_data = [
    {
        "text": caption_new,
        "excerpt": excerpt
    }
]

# 组织请求参数:文本数据和文件分开
data = {
    "templateData": json.dumps(template_data)
}
files = {
    "429279057136": open(f"{media}.png", "rb")  # 注意修正文件名拼接方式,避免变量名错误
}

headers = {
    "accept": "application/json",
    "Authorization": "Bearer gstoJiWSw3PdxtQr41oF1ghqv5jyTpcQ"
}

response = requests.post(url, data=data, files=files, headers=headers)

额外提醒

  • 检查文件名路径:你原代码里的f'{media.png}'写法有误,应该是f"{media}.png",确保变量和后缀名正确拼接。
  • 如果接口对字段结构有特殊要求,需要根据实际文档调整data和files里的字段名和层级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:01:52