Estoy usando este código en javascript para codificar un json
a = {'address': "djdjdjdj", "provider": "google"} {address: 'djdjdjdj', provider: 'google'} btoa(a) 'W29iamVjdCBPYmplY3Rd'Estoy usando este código para decodificar en backend
import json import base64 encodes_Str = "W29iamVjdCBPYmplY3Rd" btoa = lambda x:base64.b64decode(x) atob = lambda x:base64.b64encode(bytes(x, 'utf-8')).decode('utf-8') decoded = json.loads(btoa(encodes_Str)) print(decoded)error:
>>> decoded = json.loads(btoa("W29iamVjdCBPYmplY3Rd")) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/__init__.py", line 357, in loads return _default_decoder.decode(s) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1) >>>Estoy obteniendo el error anterior. ¿Cómo puedo recuperar el json que codifico en javascript? Eche un vistazo.
Su problema es que no ha convertido su objeto JavaScript en una cadena antes de intentar codificarlo en base64. Por lo tanto, cuando lo decodificas en python, obtienes la cadena:
[object Object]En su JavaScript, primero necesita codificar JSON el objeto, es decir
a = {'address': "djdjdjdj", "provider": "google"} btoa(JSON.stringify(a))Esto dará la cadena:
"eyJhZGRyZXNzIjoiZGpkamRqZGoiLCJwcm92aWRlciI6Imdvb2dsZSJ9"que luego puedes recorrer
json.loads(base64.b64decode(encodes_Str))Llegar:
{'address': 'djdjdjdj', 'provider': 'google'}