'Unable to read json file with python

I am reading a json file with python using below code:

import json
Ums = json.load(open('commerceProduct.json'))

for um in Ums :
    des = um['description']
    if des == None:
        um['description'] = "Null"
    with open("sample.json", "w") as outfile:
        json.dump(um, outfile)
    break

It is giving me the following error:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    Ums = json.load(open('commerceProduct.json'))
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/json/__init__.py", line 293, in load
    return loads(fp.read(),
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/json/decoder.py", line 340, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 5528 (char 5527)

while I am checking the json file, it looks fine.

The thing is it has one object on one line with deliminator being '\n'.

It is not corrupted since i have imported the same file in mongo.

Can someone please suggest what can be wrong in it ?

Thanks.



Solution 1:[1]

your JSON data is not in a valid format, one miss will mess up the python parser. Try to test your JSON data here, make sure it is in a correct format.

this return _default_decoder.decode(s) is returned when the python parser find somthing wrong in your json.

The code is valid and will work with a valid json doc.

Solution 2:[2]

You have one json object per line? That's not a valid json file. You have newline-delimited json, so consider using the ndjson package to read it. It has the same API as the json package you are familiar with.

import ndjson
Ums = ndjson.load(open('commerceProduct.json'))

...

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Bihi23
Solution 2