如何处理 TypeError: Object of type 'bytes' is not JSON serializable?

新手上路,请多包涵

尝试将输出转换为 Json 格式但出现错误。删除 json.dump 后将数据转换为 base64 格式。但是当使用 json.dump 时它显示错误。

代码:

 import json
import base64

with open(r"C:/Users/Documents/pdf2txt/outputImage.jpg","rb") as img:
    image = base64.b64encode(img.read())
    data['ProcessedImage'] = image

print(json.dump(data)

输出:

 TypeError: Object of type 'bytes' is not JSON serializable

使用时:

 print(json.dumps(dict(data)))

它也显示相同的错误

原文由 NKJ 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
1 个回答

您必须使用 str.decode() 方法。

您正在尝试将 bytes 类型的对象序列化为 JSON 对象。 JSON 模式 中没有这样的东西。所以你必须先将字节转换为字符串。

此外,您应该使用 json.dumps() 而不是 json.dump() 因为您不想写入文件。

在你的例子中:

 import json
import base64

with open(r"C:/Users/Documents/pdf2txt/outputImage.jpg", "rb") as img:
    image = base64.b64encode(img.read())
    data['ProcessedImage'] = image.decode() # not just image

print(json.dumps(data))

原文由 Kumpelinus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题