Kod Pythona do ładowania danych z jakiegoś długiego skomplikowanego pliku JSON:
with open(filename, "r") as f:
data = json.loads(f.read())
(uwaga: najlepsza wersja kodu to:
with open(filename, "r") as f:
data = json.load(f)
ale oba wykazują podobne zachowanie)
W przypadku wielu typów błędów JSON (brak ograniczników, nieprawidłowe ukośniki odwrotne w ciągach znaków itp.) Powoduje to wyświetlenie miłego, pomocnego komunikatu zawierającego numer wiersza i kolumny, w których znaleziono błąd JSON.
Jednak w przypadku innych typów błędów JSON (w tym klasycznego „używania przecinka na ostatnim elemencie na liście”, ale także innych rzeczy, takich jak pisanie wielkimi literami prawda / fałsz), wynik Pythona to po prostu:
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
W przypadku tego typu wartości ValueError, w jaki sposób Python powie Ci, gdzie jest błąd w pliku JSON?