我正在尝试使用编码包含字节字符串的字典json,并得到一个is not JSON serializable error:
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正确编码包含字节的字典?
该JSON格式只支持 Unicode的 字符串。由于base64.b64encode将字节编码为仅ASCII字节,因此您可以使用该编解码器解码数据:
base64.b64encode
import base64 encoded = base64.b64encode(b'data to be encoded') # b'ZGF0YSB0byBiZSBlbmNvZGVk' (notice the "b") data['bytes'] = encoded.decode('ascii') # 'ZGF0YSB0byBiZSBlbmNvZGVk'
请注意,要获取原始数据,您无需将其重新编码为字节,因为它可以b64decode处理仅ASCII字符串和字节:
b64decode
decoded = base64.b64decode(data['bytes']) # b'data to be encoded'