On 9/20/2017 5:58 PM, Bill wrote:
Interesting problem, John.

I have probably even less experience with json than you do, so I'm taking this as an opportunity to learn with you.

Suggestions:

1. Try your example with Python 2 rather than Python 3.
Bill,
Thanks for the reply. I wasn't sure how to get Python 2 through the cmd or IPython, so I went through ArcGIS, but it's mostly the same result:

>>> file = open('books.json','r')
>>> text = file.read()
>>> text = json.loads(text)
Runtime error
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'json' is not defined
>>> import json   #whoops, forget to do that first in this go 'round.
>>> text = json.loads(text)
Runtime error
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Python27\ArcGIS10.4\Lib\json\__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\ArcGIS10.4\Lib\json\decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\ArcGIS10.4\Lib\json\decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting : delimiter: line 5 column 50 (char 161)
>>>

2. Take your file and make it into a string literal in your program, and try calling json.loads with that as an argument.
I am not sure I follow what you meant, but this was what I did:
In [26]: file2 = open('books.txt')

In [27]: text2 = file2.read()

In [28]: text2 = json.loads(text2)
---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last)
<ipython-input-28-78a8123d71bd> in <module>()
----> 1 text2 = json.loads(text2)

c:\users\jpolo\appdata\local\programs\python\python36\lib\json\__init__.py in lo ads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, objec
t_pairs_hook, **kw)
    352             parse_int is None and parse_float is None and
    353             parse_constant is None and object_pairs_hook is None and not
 kw):
--> 354         return _default_decoder.decode(s)
    355     if cls is None:
    356         cls = JSONDecoder

c:\users\jpolo\appdata\local\programs\python\python36\lib\json\decoder.py in dec
ode(self, s, _w)
    337
    338         """
--> 339         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    340         end = _w(s, end).end()
    341         if end != len(s):

c:\users\jpolo\appdata\local\programs\python\python36\lib\json\decoder.py in raw
_decode(self, s, idx)
    353         """
    354         try:
--> 355             obj, end = self.scan_once(s, idx)
    356         except StopIteration as err:
    357             raise JSONDecodeError("Expecting value", s, err.value) from
None

JSONDecodeError: Expecting ':' delimiter: line 5 column 50 (char 161)


best,
John

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to