为了账号安全,请及时绑定邮箱和手机立即绑定

使用 json.dump 引发 JSONDecodeError

使用 json.dump 引发 JSONDecodeError

临摹微笑 2021-12-29 19:30:35
我需要做一个里面有很多 json 的 json 文件,比如:{}{}{}。我实际上可以创建文件,但是当我尝试读取它时,出现此错误:raise JSONDecodeError("Extra data", s, end)JSONDecodeError: Extra data有什么帮助吗?# Create dictionariestexto = ['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 jsonfor 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 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

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')


查看完整回答
反对 回复 2021-12-29
  • 1 回答
  • 0 关注
  • 406 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信