用json.dump引发JSONDecodeError(“ Extra data”,s,end)

时间:2019-04-05 03:55:10

标签: python json python-3.x

我需要创建一个包含许多json的json文件,例如:{} {} {}。

我实际上可以创建文件,但是当我尝试读取文件时,出现此错误:

raise JSONDecodeError("Extra data", s, end)
JSONDecodeError: Extra data

有帮助吗?

# Create dictionaries

texto = ['a','b','c','d','e']
keys = ['id','klass','text']
datos = []
for i in range(0,5):
    values = [str(i), str(0), texto[i]]
    dictio = dict(zip(keys, values))
    datos.append(dictio)

# Create the json
for my_dict in datos:
    with open("test.json", 'a') as fp: 
        json.dump(my_dict,fp)

# Read the json:
data = []
with open("test.json") as f: 
    for line in f:
        data.append(json.loads(line))

我希望使用{} {} {}格式的.json文件,并使用python读取此文件。现在我有了这种格式的文件,但是当我尝试读取它时,我遇到了错误

JSONDecodeError("Extra data", s, end)

1 个答案:

答案 0 :(得分:1)

json.dump不会输出结尾的换行符,因此在将多个JSON字符串转储到同一文件的循环之后,同一行中有多个JSON对象,当您读取该行并按如下方式对其进行解析时json.loads会抱怨第一个JSON对象结束后会有多余的数据。

要解决此问题,您可以在每次调用json.dump之后写一个换行符。此外,无需为每次迭代打开文件。您可以改为在循环之前打开文件:

with open("test.json", 'w') as fp: 
    for my_dict in datos:
        json.dump(my_dict,fp)
        fp.write('\n')