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文件中多了一个}
,然后再读取的时候就报错了