首页 > 解决方案 > 如何使用 API、JSON 和 Python 修复错误“类型咬的对象不是 JSON 可序列化”

问题描述

奇怪的是,同样的代码在我的 MacBook Pro 上运行起来几乎完全符合我的要求,但现在我正试图用我的工作计算机在 Windows 上做同样的事情,它遇到了一些麻烦。也许这会阐明这个问题?

无论如何,这是给我带来麻烦的代码行:

with open('PATH', 'w', encoding='utf8') as outfile:
    json.dump(surveyDetails.content, outfile).encode('utf8')

您可以看到我尝试将其编码为 utf-8 将其填满。我不需要在我的 Mac 上执行此操作,但无论如何。但是,当我读过的大多数类似帖子都说这是解决方案时,我仍然遇到同样的错误。我不确定还有什么可以尝试的——还有另一种编码方式应该更好吗?

标签: pythonjsonencoding

解决方案


你不需要编码任何东西。问题是您尝试转储的对象已经编码为bytes对象,而 JSON 不知道如何处理这些对象。

如果surveyDetails.content它本身是一个bytes对象,则在传递之前对其进行解码:

json.dump(surveyDetails.content.decode('utf-8'), outfile)

如果surveyDetails.content包含一个或多个对象的字典、列表或其他对象,则需要在转储之前bytes检查并解码其中的任何对象。bytes


推荐阅读