Код Python для загрузки данных из какого-то длинного сложного файла JSON:
with open(filename, "r") as f:
data = json.loads(f.read())
(примечание: лучшая версия кода должна быть:
with open(filename, "r") as f:
data = json.load(f)
но оба демонстрируют похожее поведение)
Для многих типов ошибок JSON (отсутствующие разделители, неправильные обратные косые черты в строках и т. Д.) Выводится приятное полезное сообщение, содержащее номер строки и столбца, в которых была обнаружена ошибка JSON.
Однако для других типов ошибок JSON (включая классическое «использование запятой в последнем элементе списка», а также другие вещи, такие как использование заглавных букв true / false), вывод 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?
json.load(f)
вместоjson.loads(f.read())