Expected property name or '}' in JSON at position N (line L column C)
Der Parser hat ein Objekt geöffnet und erwartete entweder einen Schlüssel in doppelten Anführungszeichen oder die schließende geschweifte Klammer. Er bekam etwas anderes. In echten Daten ist dieses andere fast immer ein einfaches Anführungszeichen oder ein nackter Bezeichner - was heißt, dass der Text das repr eines Python-Dicts oder ein JavaScript-Objektliteral ist und kein JSON.
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 Schlüssel in einfachen Anführungszeichen, aus einem mit str() ausgegebenen Python-Dict
print(mein_dict) und str(mein_dict) erzeugen Python-Syntax, kein JSON: einfache Anführungszeichen sowie True, False und None statt true, false und null. Verwenden Sie json.dumps, um JSON zu erzeugen.
Geht kaputt
{'name': 'Priya', 'active': True}Funktioniert
{"name": "Priya", "active": true} -
02 Schlüssel ohne Anführungszeichen, aus einem JavaScript-Objektliteral
JavaScript erlaubt nackte Bezeichner als Schlüssel. JSON nicht, auch dann nicht, wenn der Schlüssel ein völlig gültiger Bezeichner wäre.
Geht kaputt
{ name: "Priya", role: "admin" }Funktioniert
{ "name": "Priya", "role": "admin" } -
03 Ein Kommentar in einer Konfigurationsdatei
JSON hat keine Kommentarsyntax. Ein // oder ein /* innerhalb eines Objekts landet hier.
-
04 Typografische Anführungszeichen aus einer Textverarbeitung
Die Autokorrektur in Word, Google Docs, Notizen und mehreren Chat-Clients wandelt gerade Anführungszeichen in geschwungene um. Für einen JSON-Parser sind geschwungene Anführungszeichen gewöhnliche Zeichen, keine Zeichenkettenbegrenzer. Unser Validator benennt sie ausdrücklich, statt ein allgemeines unerwartetes Token zu melden.
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.
| Python | Expecting property name enclosed in double quotes: line 1 column 2 (char 1) |
|---|---|
| Java (Jackson) | Unexpected character ('s' (code 115)): was expecting double-quote to start field name |
Häufige Fragen
- Wie erzeuge ich aus einem Python-Dict richtiges JSON?
- json.dumps(obj) gibt eine JSON-Zeichenkette zurück. str(obj) und print(obj) geben Python-Syntax zurück, die nur ähnlich aussieht. Das ist eine der häufigsten Quellen ungültigen JSONs überhaupt.
- Kann ich das repr eines Python-Dicts in JSON umwandeln?
- Ja. ast.literal_eval parst es sicher in ein Python-Objekt, das Sie anschließend mit json.dumps ausgeben können. Unser Reparaturwerkzeug erledigt dieselbe Arbeit im Browser und wandelt die einfachen Anführungszeichen und die Literale True, False und None in einem Durchgang um.
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.
In gültiges JSON umwandeln