2016-10-12 3 views
6

jsonのバイト文字列を含む辞書をエンコードし、is not JSON serializable errorを取得しようとしています。JSONでバイトをエンコードする方法は? TypeErrorを投げるjson.dumps()

サンプルコード:

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でバイトを含む私の辞書をエンコードすることができますか?

答えて

7

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

encoded = base64.encodestring(b'data to be encoded') 
data['bytes'] = encoded.decode('ascii') 
関連する問題