web-dev-qa-db-ja.com

JSONでバイトをエンコードする方法は? Typesonをスローするjson.dumps()

バイト文字列を含む辞書をjsonでエンコードしようとしていますが、is not JSON serializable error

サンプルコード:

import base64
import json

data={}
encoded = base64.encodebytes(b'data to be encoded')
data['bytes']=encoded

print(json.dumps(data))

私が受け取るエラー:

TypeError: b'ZGF0YSB0byBiZSBlbmNvZGVk\n' is not JSON serializable

JSONでバイトを含む辞書を正しくエンコードするにはどうすればよいですか?

18
Fanta

JSON形式はnicode文字列のみをサポートします。 Base64はバイトをASCIIのみのバイトにエンコードするため、そのコーデックを使用してデータをデコードできます。

encoded = base64.encodestring(b'data to be encoded')
data['bytes'] = encoded.decode('ascii')
25
Martijn Pieters