Python代碼從一些長期複雜化JSON文件加載數據更好的錯誤消息:顯示不是「無JSON對象可以被解碼」
with open(filename, "r") as f:
data = json.loads(f.read())
(注:最好的代碼版本應該是:
with open(filename, "r") as f:
data = json.load(f)
但兩者表現出類似的行爲)
對於許多類型的JSON錯誤(丟失分隔符,在字符串不正確反斜線等),這個打印包含行和列n一個很好的有用信息發現JSON錯誤的地方。
然而,對於其他類型的JSON錯誤(包括經典的「在列表的最後一個項目用逗號」,而且其他像大寫真/假),Python的輸出只是:
Traceback (most recent call last):
File "myfile.py", line 8, in myfunction
config = json.loads(f.read())
File "c:\python27\lib\json\__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "c:\python27\lib\json\decoder.py", line 360, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "c:\python27\lib\json\decoder.py", line 378, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
對於這種類型的ValueError,你如何讓Python告訴你JSON文件中的錯誤在哪裏?
你可以轉儲文件的摘錄嗎? – Ketouem 2013-02-15 16:56:09
我不想在特定文件中找到錯誤;我正在嘗試修改我的程序,以便在未來的任何文件中突出顯示錯誤。 – OJW 2013-02-15 18:42:01
沒有直接關係,但是您可以只使用'json.load(f)'而不是'json.loads(f.read())' – 2013-02-25 16:02:09