Warum ein nachfolgendes Komma JSON bricht
Fazit: Nachfolgende Kommas sind in JavaScript-Objektliteralen legal und in JSON fatal. Hier sind der genaue Fehler, die RFC-8259-Grammatik, die ihn verursacht, und drei Behebungen, die wirklich halten.

Kurz gesagt: JSON verbietet nachfolgende Kommas überall – scheitert ein Parser, löschen Sie das letzte Komma mit einem Formatter; verwenden Sie JSON5 oder JSONC nur für lokales nachsichtiges Parsen und senden Sie an andere Systeme immer Standard-JSON.
Weil die Grammatik es so sagt.
{
"name": "demo",
"size": 12,
}
JSON.parse wirft Unexpected token } in JSON at position 34. Node formuliert es anders, aber jede Engine zeigt auf dieselbe Stelle: das Komma vor }.
Worüber der Parser sich tatsächlich beschwert
Die Objektproduktion in RFC 8259 ist:
object = begin-object [ member *( value-separator member ) ] end-object
Eckige Klammern bedeuten optional, der Stern bedeutet null oder mehr. In klaren Worten: Kommas trennen Mitglieder, und dem letzten Mitglied folgt direkt }.
Nach einem Komma ist der Parser also bereit für einen weiteren Mitgliedsnamen. Er liest }, und es scheitert. Arrays verhalten sich identisch – [1, 2, 3,] scheitert am ].
Woher die Gewohnheit kommt
JavaScript-Objektliterale erlauben nachfolgende Kommas seit ES5, ebenso Python-Listen und Go-Composite-Literale. Editoren fügen sie automatisch hinzu. Dann kopiert jemand ein Objektliteral aus einer .js-Datei in eine .json-Datei, und die Datei parst nicht mehr.
Die andere häufige Quelle ist handgebautes JSON: eine Schleife, die i <= length läuft, hinterlässt ein Komma nach dem letzten Element.
Drei Behebungen
Das Komma entfernen. In Ordnung für manuelle Bearbeitungen. In den JSON-Formatter einfügen, und der Fehler wird mit Zeile und Spalte gemeldet, sodass Sie genau sehen, welches zu löschen ist.
Als JSON5 parsen. Obermengen akzeptieren nachfolgende Kommas, was für lokale Konfiguration in Ordnung ist. Nicht in Ordnung ist es für alles, was Sie an ein anderes System senden – der Empfänger lehnt es weiterhin ab.
Aufhören, Strings zu verketten. Verwenden Sie JSON.stringify, json.dumps, Jackson. Der Serializer behandelt Trennzeichen korrekt und löst gleichzeitig das Escaping.
Schnelle Prüfliste
| Wo | Typische Ursache |
|---|---|
| Schleifenverkettung | i <= length hinterlässt ein überzähliges Komma |
| Copy-Paste | Objektliteral aus einer JS-Datei gehoben |
| Templates | Hartcodiertes Komma plus eine Schleife, die ein weiteres hinzufügt |
| Manuelle Bearbeitung | Letztes Feld gelöscht, sein Komma blieb zurück |
FAQ
Warum sind nachfolgende Kommas in JavaScript legal, in JSON aber nicht?
JavaScript-Objektliterale erlauben sie seit ES5, ebenso Python-Listen und Go-Composite-Literale, weshalb die Gewohnheit Menschen in JSON begleitet. RFC 8259 erlaubt Kommas nur zwischen Mitgliedern: Dem letzten Mitglied folgt direkt } oder ]. Ein Objektliteral aus einer .js-Datei in eine .json-Datei zu kopieren ist die übliche Quelle.
Sollte ich als JSON5 parsen, um nachfolgende Kommas zu akzeptieren?
Nur für lokale Konfiguration. Obermengen akzeptieren nachfolgende Kommas, aber alles, was Sie an ein anderes System senden, wird als striktes JSON geparst und scheitert weiterhin. Erzeugen Sie Standard-JSON an der Ausgabegrenze, statt sich darauf zu verlassen, dass der Empfänger nachsichtig ist.
Wo sollte ich nach einem Fehler mit nachfolgendem Komma zuerst suchen?
Beginnen Sie mit der Position in der Fehlermeldung: Sie zeigt meist auf das Komma vor } oder ]. Prüfen Sie dann die drei üblichen Quellen: eine Schleife mit i <= length, ein aus einer JS-Datei eingefügtes Objektliteral und ein Template, das ein Komma neben einer Schleife hartcodiert. Das Einfügen in einen Formatter meldet die genaue Zeile und Spalte.