zljubi...@gmail.com wrote: > Hi, > > in python3 my variable looks like this: > > a = b'{"uuid":"5730e8666ffa02.34177329","error":""}' > str(a) = 'b\'{"uuid":"5730e8666ffa02.34177329","error":""}\'' > > If I execute the following command I get the error: > >>>> json.loads(str(a)) > Traceback (most recent call last): > File "C:\Program Files (x86)\JetBrains\PyCharm Community Edition > 2016.1.2\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec > exec(exp, global_vars, local_vars) > File "<input>", line 1, in <module> > File "C:\Program Files\Python34\lib\json\__init__.py", line 318, in > loads > return _default_decoder.decode(s) > File "C:\Program Files\Python34\lib\json\decoder.py", line 343, in > decode > obj, end = self.raw_decode(s, idx=_w(s, 0).end()) > File "C:\Program Files\Python34\lib\json\decoder.py", line 361, in > raw_decode > raise ValueError(errmsg("Expecting value", s, err.value)) from None > ValueError: Expecting value: line 1 column 1 (char 0) > > Why I am getting this error? > If I set variable a to the '{"uuid":"5730e8666ffa02.34177329","error":""}' > everything works as expected.
Look at the traceback: "line 1 column 1 (char 0)" mentioned in the error message is the leading "b". When you convert a byte string to unicode with str(bytestr) the "b" prefix and the quotation marks are part of the resulting string, but not valid JSON. Try a.decode() instead of str(a): >>> a = b'{"uuid":"5730e8666ffa02.34177329","error":""}' >>> json.loads(a.decode()) {'error': '', 'uuid': '5730e8666ffa02.34177329'} -- https://mail.python.org/mailman/listinfo/python-list