python json.dump 将字典写文件json文件后多了一个花括号"}",读取时报错:json.decoder.JSONDecodeError: Extra data: line

问题复现

我的字典格式:

import json

d = {'Demo': {'Total_Result': 'Pass', 'info': {'test3': 'Pass'}},
     '10.0.0.111': {'Total_Result': 'Pass', 'info': {'test_double_display': 'passed', 'test_ddr_pcie': 'passed'}}}

with open('xxx.json', 'r+') as f:  # 注意这里r+ 是可读可写
    json.dump(d, f)

with open('xxx.json', 'r+') as f:
    res = json.load(f)

print(res)

这个代码会概率出现报错:json.decoder.JSONDecodeError: Extra data: line 。原因是因为在写入json的时候多了一个},导致json格式错误读取失败。

问题解决

修改后代码:

import json

d = {'Demo': {'Total_Result': 'Pass', 'info': {'test3': 'Pass'}},
     '10.0.0.111': {'Total_Result': 'Pass', 'info': {'test_double_display': 'passed', 'test_ddr_pcie': 'passed'}}}

with open('xxx.json', 'w+') as f:  # 注意这里w+ 是可读可写
    json.dump(d, f)

with open('xxx.json', 'r+') as f:
    res = json.load(f)

print(res)

修改点就在:在写入json文件的时候采用w+,不采用r+ 虽然都是可读可写,但是在写json文件的时候确实出现了不可思议的事情。

总结:

这个报错就是json.load在读取json文件的时候,json格式有问题。原因有很多,我的问题就是使用r+导致写的json文件中多了一个},然后再读取的时候就报错了

posted @ 2023-12-29 15:07  Tarzen  阅读(327)  评论(0编辑  收藏  举报