我试图用json
编码一个包含字节串的字典,得到一个is not JSON serializable error
:
import base64
import json
data = {}
encoded = base64.b64encode(b'data to be encoded')
data['bytes'] = encoded
print(json.dumps(data))
我得到的错误:
TypeError: b'ZGF0YSB0byBiZSBlbmNvZGVk\n' is not JSON serializable
如何正确地用JSON对包含字节的字典进行编码?
2条答案
按热度按时间zzlelutf1#
JSON format只支持 *unicode字符串 *。由于
base64.b64encode
将字节编码为仅ASCII字节,因此您可以使用该编解码器来解码数据:请注意,要获取原始数据,您不需要将其重新编码为字节,因为
b64decode
处理仅ASCII字符串以及字节:kkih6yb82#
正如@Martijn提到的,只有字符串是json可序列化的(使用
json
)。通过指定编码,可以使用str()
调用将bytes对象转换为字符串。