Base 64 encode a JSON variable in Python

ID : 274518

viewed : 51

Tags : pythonjsonpython-3.xbase64python

Top 5 Answer for Base 64 encode a JSON variable in Python

vote vote


In Python 3.x you need to convert your str object to a bytes object for base64 to be able to encode them. You can do that using the str.encode method:

>>> import json >>> import base64 >>> d = {"alg": "ES256"}  >>> s = json.dumps(d)  # Turns your json dict into a str >>> print(s) {"alg": "ES256"} >>> type(s) <class 'str'> >>> base64.b64encode(s) Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/usr/lib/python3.2/", line 56, in b64encode     raise TypeError("expected bytes, not %s" % s.__class__.__name__) TypeError: expected bytes, not str >>> base64.b64encode(s.encode('utf-8')) b'eyJhbGciOiAiRVMyNTYifQ==' 

If you pass the output of your_str_object.encode('utf-8') to the base64 module, you should be able to encode it fine.

vote vote


Here are two methods worked on python3 encodestring is deprecated and suggested one to use is encodebytes

import json import base64   with open('test.json') as jsonfile:     data = json.load(jsonfile)     print(type(data))  #dict     datastr = json.dumps(data)     print(type(datastr)) #str     print(datastr)     encoded = base64.b64encode(datastr.encode('utf-8'))  #1 way     print(encoded)      print(base64.encodebytes(datastr.encode())) #2 method 
vote vote


You could encode the string first, as UTF-8 for example, then base64 encode it:

data = '{"hello": "world"}' enc = data.encode()  # utf-8 by default print base64.encodestring(enc) 

This also works in 2.7 :)

vote vote


Here's a function that you can feed a string and it will output a base64 string.

import base64 def b64EncodeString(msg):     msg_bytes = msg.encode('ascii')     base64_bytes = base64.b64encode(msg_bytes)     return base64_bytes.decode('ascii') 
vote vote


Top 3 video Explaining Base 64 encode a JSON variable in Python