我定义了一个helper方法来从字符串或文件加载json,如下所示:def get_json_from_string_or_file(obj):
if type(obj) is str:
return json.loads(obj)
return json.load(obj)
当我尝试使用一个文件时,它在load调用时失败,出现以下异常:
^{pr2}$
我三次检查了我的json文件,它绝对不是空的,它只有一个简单的foobar键值映射。在
另外,我将json文件输入方法,如下所示:
os.path.join(os.path.dirname(__file__), "..", "test.json")
你知道这里发生了什么吗?在
编辑:我把我的助手方法改成了下面的方法来修正答案和评论中的错误,但是它仍然不起作用,当我传入一个已经打开的文件时,我得到了同样的错误。在def get_json_from_file(_file):
if type(_file) is str:
with open(_file) as json_file:
return json.load(json_file)
return json.load(_file)
编辑2:我发现了问题!如果连续两次对打开的文件调用json.load,则会发生此错误。原来我的应用程序的另一部分已经打开了那个文件。在
以下是一些复制代码:with open("/test.json") as f:
json.load(f)
json.load(f)