python json.decoder.jsondeCoderror在写入json时出错
我尝试像这样用python编写一个空的json文件python json.decoder.jsondeCoderror在写入json时出错,python,json,Python,Json,我尝试像这样用python编写一个空的json文件 def add_to_json(name, price): data = {str(name): str(price)} with open("produse.json", 'r+', encoding="utf-8") as file: json_file = json.load(file) json_file.update(data) f
def add_to_json(name, price):
data = {str(name): str(price)}
with open("produse.json", 'r+', encoding="utf-8") as file:
json_file = json.load(file)
json_file.update(data)
file.seek(0)
json.dump(json_file, file)
当我运行代码时,我收到一些奇怪的错误消息:
json.decoder.JSONDecodeError:期望值:第1行第1列(char 0)
。我想可能是来自json.load()
?您只需检查文件是否为空:
import json
def add_to_json(name, price):
newObject = {str(name): str(price)}
with open("produse.json", 'r+', encoding="utf-8") as file:
data = file.read().strip() # Just to be safe: Remove all whitespaces.
json_file = json.loads(
data or '{}'
) # data evaluates to None if empty. If None use a empty JSON string!
json_file.update(newObject)
file.seek(0)
json.dump(json_file, file)
add_to_json('foo', '2.0')
# Verify:
print(open("produse.json", 'r').read())
输出:
您只需检查文件是否为空:
import json
def add_to_json(name, price):
newObject = {str(name): str(price)}
with open("produse.json", 'r+', encoding="utf-8") as file:
data = file.read().strip() # Just to be safe: Remove all whitespaces.
json_file = json.loads(
data or '{}'
) # data evaluates to None if empty. If None use a empty JSON string!
json_file.update(newObject)
file.seek(0)
json.dump(json_file, file)
add_to_json('foo', '2.0')
# Verify:
print(open("produse.json", 'r').read())
输出:
如果您给出完整的异常,那么它将解释导致错误的行。您的
produse.json
可能不是一个真正的json文件。您的produse.json
文件的前3行是什么?事实上,我认为该文件是空的。@RobertSeaman该文件是空的。如果该文件是空的,则无需读取和转换,因此json.load()
会给出此错误。也许您应该首先将其作为普通字符串读取,并且仅当字符串不为空时才使用json.loads(string)
。或者使用try/except来捕获它。如果您给出了完整的异常,那么它将解释导致错误的行。您的produse.json
可能不是一个真正的json文件。您的produse.json
文件的前3行是什么?事实上,我认为该文件是空的。@RobertSeaman该文件是空的。如果该文件是空的,则无需读取和转换,因此json.load()
会给出此错误。也许您应该首先将其作为普通字符串读取,并且仅当字符串不为空时才使用json.loads(string)
。或者使用try/except来捕捉它。谢谢!这就是问题所在。谢谢!这就是问题所在。