Einfache Anführungszeichen in JSON beheben

Strings und Objektschlüssel in JSON müssen doppelte Anführungszeichen verwenden. Werte mit einfachen Anführungszeichen sind häufig in JavaScript-Snippets, Python-ähnlicher Ausgabe und LLM-Antworten.

Warum einfache Anführungszeichen scheitern

Striktes JSON akzeptiert nur Strings mit doppelten Anführungszeichen. Ein Parser lehnt {'name':'Ada'} ab, auch wenn JavaScript-Entwicklerinnen die Form erkennen.

Fehlerhaftes Beispiel

{ 'name': 'Ada', 'active': true }

Korrigiertes JSON

{ "name": "Ada", "active": true }

Woher Text mit einfachen Anführungszeichen kommt

Pythons repr() und dict-Ausgabe, aus der Konsole kopierte JavaScript-Objektliterale, Ruby-Hash-Inspect und viele LLM-Antworten nutzen einfache Anführungszeichen. Keines davon ist JSON — es sind sprachspezifische Literale, die nur ähnlich aussehen.

Warum ein blindes Suchen-Ersetzen riskant ist

Ein blindes Replace von ' nach " zerstört Werte mit Apostrophen, z. B. { 'note': 'it\'s fine' }. Nach dem Ersetzen kollidiert das innere Apostroph mit dem neuen String-Delimiter. Ein sicherer Konverter muss den Quote-Kontext kennen und nur die Delimiter tauschen, nicht die inneren Zeichen.

Sichere Umwandlungsstrategie

Tokenisiere die Eingabe zuerst: lauf durch den Text, erkenne String-Grenzen am öffnenden Anführungszeichen und baue jeden Token mit doppelten Anführungszeichen neu zusammen — entferne überflüssige Escape-Sequenzen für Apostrophe und escape vorhandene doppelte Anführungszeichen. Das Repair-Tool dieser Seite erledigt das in einem Durchlauf.

Verwandte JSON-Syntaxfehler

JSON mit einfachen Anführungszeichen bringt oft weitere JavaScript-typische Sünden im selben Payload mit: Schlüssel ohne Anführungszeichen, Trailing Commas, Zeilen-Kommentare oder undefined. Nach dem Fixen der Anführungszeichen das Ergebnis validieren, um Restprobleme sichtbar zu machen.

FAQ

F: Sind Strings mit einfachen Anführungszeichen in JSON5 erlaubt? A: Ja, JSON5 erlaubt sie. F: Akzeptiert Pythons json.loads einfache Anführungszeichen? A: Nein — verwende ast.literal_eval, falls die Quelle wirklich ein Python-Literal ist; sonst die Anführungszeichen vorher tauschen. F: Brauchen JSON-Schlüssel auch doppelte Anführungszeichen? A: Ja — Schlüssel sind Strings, gleiche Regel.