使用 json.dump 引发 JSONDecodeError

我需要做一个里面有很多 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)


临摹微笑
浏览 494回答 1
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')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python