json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Question:

I am trying to import a file which was saved using json.dumps and contains tweet coordinates:

{
    "type": "Point", 
    "coordinates": [
        -4.62352292, 
        55.44787441
    ]
}

My code is:

>>> import json
>>> data = json.loads('/Users/JoshuaHawley/clean1.txt')  

But each time I get the error:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

I want to end up extracting all the coordinates and saving them separately to a different file so they can then be mapped, but this seemingly simple problem is stopping me from doing so. I have looked at answers to similar errors but don’t seem to be able to apply it to this. Any help would be appreciated as I am relatively new to python.

Asked By: JTH

||

Answers:

json.loads() takes a JSON encoded string, not a filename. You want to use json.load() (no s) instead and pass in an open file object:

with open('/Users/JoshuaHawley/clean1.txt') as jsonfile:
    data = json.load(jsonfile)

The open() command produces a file object that json.load() can then read from, to produce the decoded Python object for you. The with statement ensures that the file is closed again when done.

The alternative is to read the data yourself and then pass it into json.loads().

Answered By: Martijn Pieters

It helped for me to add "myfile.seek(0)", move the pointer to the 0 character:

with open(storage_path, 'r') as myfile:
    if len(myfile.readlines()) != 0:
        myfile.seek(0)
        Bank_0 = json.load(myfile)
Answered By: Sergey_M

You may use this function (it works with data):

def read_json_file(filename):
    with open(filename, 'r') as f:
        cache = f.read()
        data = eval(cache)
    return data

Or, you may put this in your code (it has the same effect):

def read_json_file(filename):
    data = []
    with open(filename, 'r') as f:
        data = [json.loads(_.replace('}]}"},', '}]}"}')) for _ in f.readlines()]
        return data
Answered By: Kroim

import json

file_path = "C:/Projects/Tryouts/books.json"

with open(file_path, ‘r’) as j:
contents = json.loads(j.read())
print(contents)

Answered By: Othniel Davidson

I got same type of error after reading in a json file creating from python.

Same error occurred whether i read into a string and tried json.loads() or straight from file with json.load()

In my case, it turned out to be because I had written python booleans (False/True) straight out to the file.

Trying to read them back in again caused this error.
When i modified to valid json (true/false), json.load worked fine

Didnt see any SO questions with this as a possible cause for this error so adding here for reference.

Answered By: Trevor North
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.