Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #108438

Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0)

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.python
Subject Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0)
Date 2016-05-09 21:41 +0100
Organization A noiseless patient Spider
Message-ID <87shxrc6b7.fsf@bsb.me.uk> (permalink)
References <137a2593-c307-405f-8f23-3959099ff16f@googlegroups.com>

Show all headers | View raw


zljubisic@gmail.com writes:

> 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?

The result of str(a) is not a valid JSON string.  It starts with a b but
a JSON string must start with a digit of one of -, ", {, [, t, f, n (the
letters being legal only if they are the start of true, false or null.

In fact (in Python 3), passing bytes to str() without an encoding is a
special case -- you get an informal string representation.  I'm not sure
you can be sure what you get though I imagine it's designed to be the
same as Python 2 gave.

> If I set variable a to the
> '{"uuid":"5730e8666ffa02.34177329","error":""}' everything works as
> expected.

That string starts with { so it's OK.  You probably what something like

 json.loads(str(a, 'ascii'))

or maybe 'utf-8' or 'windows-1285' or... well you get the idea.  You
need to say how the bytes should be turned into string characters.

-- 
Ben.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0) zljubisic@gmail.com - 2016-05-09 12:56 -0700
  Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0) Peter Otten <__peter__@web.de> - 2016-05-09 22:17 +0200
  Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0) MRAB <python@mrabarnett.plus.com> - 2016-05-09 21:21 +0100
  Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0) Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-05-09 21:41 +0100
  Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0) Terry Reedy <tjreedy@udel.edu> - 2016-05-09 19:07 -0400
    Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0) Steven D'Aprano <steve@pearwood.info> - 2016-05-10 12:13 +1000
      Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0) Rustom Mody <rustompmody@gmail.com> - 2016-05-09 21:22 -0700
        Re: json.loads(...) ValueError: Expecting value: line 1 column 1 (char 0) zljubisic@gmail.com - 2016-05-10 12:27 -0700

csiph-web