我目前正在做另一个学校项目,我必须写入一个.json文件。因为这取决于文件是否为空,我在代码中有一个简单的if子句来处理这个问题:
json_start = {"messages": []}
with open(self._db, 'r') as json_file:
first_char = json_file.read(1)
if not first_char:
json_content = json_start
last_id = 0
else:
json_content = json.load(json_file)
message_list = json_content.get("messages")
last_id = message_list[-1].get("id")
字符串
正如你所看到的,我读取json_file
的第一个字符来判断文件是否为空,如果不是,我用json.load(json_file)
将文件的内容加载到json_content
中。
但是,如果我的文件中有内容,像这样:
{
"messages": [
{
"id": 1,
"header": "Subj 1",
"body": "body 1"
}
]
}
型
由于某种奇怪的原因,我得到了一个JSONDecodeError: Extra data
。我已经检查了文件中是否有任何不应该出现的空格,但没有发现任何空格。
为什么我会得到这个错误?
1条答案
按热度按时间mrfwxfqh1#
在您调用
json_file.read(1)
之后,json.load()
将从文件的第二个字符开始阅读,这将是无效的。您应该倒回文件的开头。字符串