[英]How to encode bytes in JSON? json.dumps() throwing a TypeError
我正在嘗試使用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
將字節編碼為base64.b64encode
ASCII 字節,因此您可以使用該編解碼器對數據進行解碼:
import base64
encoded = base64.b64encode(b'data to be encoded') # b'ZGF0YSB0byBiZSBlbmNvZGVk' (notice the "b")
data['bytes'] = encoded.decode('ascii') # 'ZGF0YSB0byBiZSBlbmNvZGVk'
請注意,要取回原始數據,您無需將其重新編碼為字節,因為b64decode
處理b64decode
ASCII 字符串和字節:
decoded = base64.b64decode(data['bytes']) # b'data to be encoded'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.