【问题标题】:How to fix error "Object of type bites is not JSON serializable" with API, JSON, and Python如何使用 API、JSON 和 Python 修复错误“类型咬的对象不是 JSON 可序列化”
【发布时间】:2019-01-31 20:47:18
【问题描述】:

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

不管怎样,这行代码给我带来了麻烦:

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

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

【问题讨论】:

  • 你为什么要encode()json.dump()?它不会为您返回任何内容给encode()。你的意思是json.dump(surveyDetails.content.decode('utf-8'), outfile) 吗?如果您将完整的回溯和相关代码发布为minimal reproducible example,也会更有帮助

标签: python json encoding


【解决方案1】:

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

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

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

如果surveyDetails.content包含一个或多个bytes 对象的字典、列表或其他对象,您需要先检查并解码其中的任何bytes 对象扔掉它。

【讨论】:

  • 这行得通,谢谢。显然,我需要更好地了解编码与解码等。
  • @jeepersmcface 在stackoverflow.com/questions/40163323/… 接受的答案总结了 response.text、response.content 以及何时使用编码之间的差异。希望对您有所帮助。
猜你喜欢
  • 2020-07-19
  • 2021-12-24
  • 1970-01-01
  • 2021-11-05
  • 2018-10-28
  • 2020-09-17
  • 2022-12-21
  • 2016-07-07
  • 2019-08-14
相关资源
最近更新 更多