我需要创建一个包含许多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)
答案 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')