Gupta
Gupta

Reputation: 314

Getting decode Error when reading JSON file

I am trying to read JSON File but it gives error as below

Data reference: https://github.com/ankitgoel1602/data-science/blob/master/json-data/level_1.json https://github.com/ankitgoel1602/data-science/blob/master/json-data/multiple_levels.json

Code

with open("multiple_levels.json", 'r') as j:
 contents = json.loads(j.read())

Error:

---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last)
<ipython-input-14-0fce326c8851> in <module>
      1 with open("multiple_levels.json", 'r') as j:
----> 2      contents = json.loads(j.read())

~\AppData\Local\Continuum\anaconda3\lib\json\__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    346             parse_int is None and parse_float is None and
    347             parse_constant is None and object_pairs_hook is None and not kw):
--> 348         return _default_decoder.decode(s)
    349     if cls is None:
    350         cls = JSONDecoder

~\AppData\Local\Continuum\anaconda3\lib\json\decoder.py in decode(self, s, _w)
    335 
    336         """
--> 337         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    338         end = _w(s, end).end()
    339         if end != len(s):

~\AppData\Local\Continuum\anaconda3\lib\json\decoder.py in raw_decode(self, s, idx)
    353             obj, end = self.scan_once(s, idx)
    354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
    356         return obj, end

JSONDecodeError: Expecting value: line 7 column 1 (char 6)

Upvotes: 0

Views: 544

Answers (2)

FObersteiner
FObersteiner

Reputation: 25564

you can directly load the json from the web if you use the "raw content" URL:

import json
import urllib.request

url = "https://raw.githubusercontent.com/ankitgoel1602/data-science/master/json-data/multiple_levels.json"
with urllib.request.urlopen(url) as r:
    data = json.loads(r.read().decode())

print(data)
[{'Scaler': 'Standard', 'family_min_samples_percentage': 5, 'original_number_of_clusters': 4, 
  'Results': [{'eps_value': 0.1, 'min_samples': 5, 'number_of_clusters': 9, 'number_of_noise_samples': 72, 
               'scores': {'adjusted_rand_index': 0.0012946494377947854, 
                          'adjusted_mutual_info_score': 0.008962599716725805, 'homogeneity_score': ...

enter image description here

Upvotes: 1

jose_bacoy
jose_bacoy

Reputation: 12684

the problem is when you download a file from github and not with your code. The file contents in github is not what you see when you simply do "save links as" As a solution, you can go to the github repo and download it as a zip (see attached) Download file from github

OR since the file json-data/level-1.json is small, simply do a copy/paste and save into your text editor.

This is the result when the file is properly downloaded from github.

Success!!

Here is the contents of the file doing a "save links as". when download file from github

Look at line 7, where your code is complaining.

Upvotes: 1

Related Questions