Expecting property name enclosed in double quotes: line L column C (char N)
Der Parser befindet sich in einem Objekt und erwartete einen Schlüssel in doppelten Anführungszeichen. Er fand etwas anderes: ein einfaches Anführungszeichen, ein nacktes Wort oder, in älteren Python-Versionen, ein Komma am Ende. JSON verlangt, dass Schlüssel Zeichenketten in doppelten Anführungszeichen sind - ohne Ausnahme für Schlüssel, die wie Bezeichner aussehen.
Fügen Sie Ihr JSON ein und sehen Sie genau, wo es bricht
Nichts, was Sie einfügen, verlässt Ihren Browser. Die connect-src Erlaubnisliste macht daraus eine Garantie des Browsers statt eines Versprechens. Selbst überprüfen
Was es tatsächlich auslöst
Sortiert danach, wie oft sich das jeweilige als die Antwort herausstellt.
-
01 Ein Python-Dict ausgegeben statt serialisiert
str(d) und print(d) erzeugen einfache Anführungszeichen. Das ist mit Abstand die häufigste Quelle dieses Fehlers.
Geht kaputt
data = str({'a': 1}) json.loads(data)Funktioniert
data = json.dumps({'a': 1}) json.loads(data) -
02 Quoting der AWS- oder Azure-CLI unter Windows
PowerShell und cmd behandeln Anführungszeichen anders als eine POSIX-Shell, sodass inline übergebene JSON-Argumente ohne ihre doppelten Anführungszeichen bei der CLI ankommen. Die zuverlässige Lösung ist, das JSON in eine Datei zu legen und file://params.json zu übergeben, statt gegen die Shell zu kämpfen.
Geht kaputt
aws dynamodb query --key-condition-expression "{\"id\": ...}"Funktioniert
aws dynamodb query --cli-input-json file://params.json -
03 Ein Komma am Ende, auf Python 3.12 und älter
Vor 3.13 erzeugte ein Komma am Ende diese Meldung. Ab 3.13 bekommt es eine eigene: „Illegal trailing comma before end of object“. Wenn Sie einer Anleitung folgen, die keine Versionen nennt, kann sie deshalb nicht zu dem passen, was Sie sehen.
Derselbe Fehler in anderen Laufzeitumgebungen
Das zugrunde liegende Problem ist identisch; nur der Wortlaut unterscheidet sich. Meldet eine Kollegin eine dieser Zeilen, sieht sie genau dasselbe wie Sie.
| JavaScript (V8) | Expected property name or '}' in JSON at position 1 (line 1 column 2) |
|---|
Häufige Fragen
- Kann ich das repr eines Python-Dicts parsen, ohne es umzuschreiben?
- ast.literal_eval erledigt das sicher: Es wertet literale Python-Syntax aus, ohne - anders als eval - beliebigen Code auszuführen. Anschließend json.dumps auf das Ergebnis, wenn Sie echtes JSON brauchen.
Jetzt beheben
Fügen Sie das Payload in das Werkzeug oben ein, oder gehen Sie direkt zu dem, das für diesen Zweck gebaut wurde.
Einfache Anführungszeichen in JSON umwandeln