我有一个返回 gz 文件的 api。我运行 api 的应用程序只接受 json 格式。有没有办法将返回的 gz 文件附加到 json 对象? 将 gz 文件转换为 base64 格式,然后创建一个 json 对象,例如 { "file": "base64 format"} 行吗?
print(json.dumps({'file': base64.b64decode(response_alert.content)}))
我得到了错误
Object of type bytes is not JSON serializable
最佳答案
字符串编码为str
→bytes
,解码为bytes
→str
。 Base64 正好相反,因为它将二进制数据编码为字符,而不是将字符编码为二进制数据。然而,由于它的许多用例涉及 ASCII 协议(protocol),如 SMTP,base64.b64encode
实际上需要并返回 bytes
(后一种情况下为 ASCII) .因此你想要
json.dumps(dict(file=base64.b64encode(response_alert.content).decode()))
它利用支持 ASCII 文本的默认编码 (UTF-8)。另一方面,您不必费心将编码返回到 bytes
,因为 str
被 base64.b64decode
接受。
关于python - 如何将 gz 文件附加到 python 中的 json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70898627/