2016-10-12 3 views
6

Ich versuche, ein Wörterbuch zu codieren, das eine Zeichenfolge von Bytes mit json enthält und eine is not JSON serializable error erhält.Wie codiert man Bytes in JSON? json.dumps() wirft einen TypeError

Beispielcode:

import base64 
import json 

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

print(json.dumps(data)) 

Der Fehler, den ich erhalten:

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

Wie kann ich mein Wörterbuch korrekt codieren Bytes mit JSON enthalten?

Antwort

7

Das JSON-Format unterstützt nur Unicode-Strings. Da Base64 Bytes in Nur-ASCII-Bytes codiert, können Sie diesen Codec verwenden, um die Daten zu decodieren:

encoded = base64.encodestring(b'data to be encoded') 
data['bytes'] = encoded.decode('ascii') 
Verwandte Themen