Код 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())