Python-Code zum Laden von Daten aus einer langen, komplizierten JSON-Datei:
with open(filename, "r") as f:
data = json.loads(f.read())
(Hinweis: Die beste Codeversion sollte sein:
with open(filename, "r") as f:
data = json.load(f)
aber beide zeigen ein ähnliches Verhalten)
Bei vielen Arten von JSON-Fehlern (fehlende Trennzeichen, falsche Backslashes in Zeichenfolgen usw.) wird eine nette hilfreiche Nachricht gedruckt, die die Zeilen- und Spaltennummer enthält, in der der JSON-Fehler gefunden wurde.
Für andere Arten von JSON-Fehlern (einschließlich des Klassikers "Verwenden von Komma für das letzte Element in einer Liste", aber auch für andere Dinge wie Groß- und Kleinschreibung von wahr / falsch) lautet die Python-Ausgabe jedoch nur:
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
Wie kann Python bei dieser Art von ValueError feststellen, wo der Fehler in der JSON-Datei liegt?
json.load(f)
anstattjson.loads(f.read())