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

98

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/base64.py", 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

84

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

75

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

67

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

50

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







Related QUESTION?