J'essaie d'encoder un dictionnaire contenant une chaîne d'octets avec json
et d'obtenir un is not JSON serializable error
.
Exemple de code:
import base64
import json
data={}
encoded = base64.encodebytes(b'data to be encoded')
data['bytes']=encoded
print(json.dumps(data))
L'erreur que je reçois:
TypeError: b'ZGF0YSB0byBiZSBlbmNvZGVk\n' is not JSON serializable
Comment puis-je encoder correctement mon dictionnaire contenant des octets avec JSON?
Le format JSON ne prend en charge que chaînes unicode. Étant donné que Base64 code les octets en octets ASCII uniquement, vous pouvez utiliser ce codec pour décoder les données:
encoded = base64.encodestring(b'data to be encoded')
data['bytes'] = encoded.decode('ascii')