Von Holger Voges auf Samstag, 25. März 2023
Kategorie: Tipp

Fehler bei JSON-Import in Python: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Python kann mit dem json-Modul Strings im JSON-Format direkt in einen Dictionary konvertieren. Zum Import aus einer JSON-Datei muss man die Datei zuerst mit open einlesen. 

Python erwartet hier, wie im JSON-Standard definiert, eine in UTF8 codierte Datei ohne BOM (Byte Order Mark). Powershell speichert bis zur Version 5.1 allerdings alle Dateien mit BOM - auch dann, wenn man explizit UTF8 als Format ausgewählt hat. Die BOM ist im ersten Byte der Datei kodiert, und entsprechend lautet auch die Fehlermeldung von Python: 

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Man kann die Datei unter Windows 11 einfach im Notepad öffnen und ohne BOM speichern oder alternativ die Datei in Powershell 7 öffnen, da das Problem hier gefixt wurde. 

 Alternativ kann man in Powershell 5 statt der Cmdlets Out-File direkt auf das .net-Framework zurückgreifen. 

Kommentare hinterlassen