Weisheiten - der Netz-Weise Blog
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.
import json with open('c:\user.json') as user: message = json.load(user)
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.
$Json = Get-Command | ConvertTo-Json [System.IO.File]::WriteAllLines('C:\mycommands.json', $Json)
Kommentare