2016-10-12 20 views
6

Próbuję kodować słownik zawierający ciąg bajtów z json i otrzymuję is not JSON serializable error.Jak kodować bajty w JSON? json.dumps() throwing a TypeError

Przykładowy kod:

import base64 
import json 

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

print(json.dumps(data)) 

Błąd otrzymuję:

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

Jak mogę poprawnie zakodować mój słownik zawierający bajty z JSON?

Odpowiedz

7

Format JSON obsługuje tylko ciągi znaków Unicode . Ponieważ Base64 koduje bajty do bajtów tylko ASCII, możesz użyć tego kodeka do dekodowania danych:

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