簡體   English   中英

如何在 JSON 中編碼字節? json.dumps() 拋出 TypeError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM