json.decoder.JSONDecodeError:期望值:第1行第1列(char 0)

时间:2015-11-29 16:12:30

标签: python json

我正在尝试导入使用json.dumps保存并包含推文坐标的文件:

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

我的代码是:

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

但每次我收到错误:

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

我想最终提取所有坐标并将它们分别保存到不同的文件中,以便可以对它们进行映射,但这个看似简单的问题阻止了我这样做。我已经查看了类似错误的答案,但似乎无法将其应用于此。任何帮助都会受到赞赏,因为我对python来说比较新。

3 个答案:

答案 0 :(得分:27)

json.loads()采用 JSON编码的字符串,而不是文件名。您想要使用json.load()(无s)而传入一个打开的文件对象:

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

open()命令生成一个json.load()可以读取的文件对象,为您生成解码的Python对象。 with语句确保文件在完成后再次关闭。

另一种方法是自己阅读数据,然后将其传递给json.loads()

答案 1 :(得分:5)

我有类似的错误:"期望值:第1行第1列(字符0)"

帮助我添加" myfile.seek(0)",将指针移动到0字符

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

答案 2 :(得分:1)

请使用此功能

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

另一个功能

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