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

上传HTML到Confluence时报TextIOWrapper不可JSON序列化错误如何解决

问题原因

你遇到的TypeError: Object of type 'TextIOWrapper' is not JSON serializable报错,本质是参数类型传递错误:

  • codecs.open("sample.html", 'r')返回的是文件流对象,不是HTML文本字符串
  • confluence.create_page方法的页面内容参数要求传入字符串类型,底层发送请求时会将参数序列化为JSON,文件流对象不支持JSON序列化,因此触发报错
  • 额外注意:你代码中先执行了print(f.read()),会将文件指针移动到文件末尾,就算后续尝试读取文件内容也会得到空字符串,需要避免重复读取文件流。
解决方案

不需要对HTML做特殊格式转换,Confluence的storage表示格式原生支持绝大多数HTML标签,只需要将HTML文件的内容读取为字符串后再传入create_page方法即可。

修正后完整代码

import yaml
from atlassian import Confluence
import urllib, mimetypes
import requests
import codecs,json

confluence = Confluence(
    url='https://confluence.com',
    username='12344',
    password='abcd')

#### 读取HTML文件为字符串
with codecs.open("sample.html", 'r', encoding='utf-8') as f:
    html_content = f.read()
# 打印内容验证
print(html_content)

# 从零创建页面
status = confluence.create_page(
    'ABCD', #空间标识
    'Report', #页面标题
    html_content, #传入读取到的HTML字符串
    parent_id=123456, #新页面所属父页面的pageid
    type='page',
    representation='storage',
    editor='v2'
)

print(status)
额外注意事项
  • 推荐用with语句打开文件,执行完读取逻辑后会自动关闭文件句柄,避免资源泄漏
  • 如果HTML中包含中文、特殊符号,读取文件时明确指定encoding='utf-8'可以避免出现乱码问题
  • 如果HTML包含Confluence不支持的特殊标签,可以提前用正则或者HTML解析库做清洗后再传入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:06:03