JSON mit Kommentaren
JSONC (JSON with Comments) erweitert Standard-JSON um JavaScript-ähnliche Kommentare. Viele Entwicklungstools verwenden JSONC für Konfigurationsdateien, in denen Kommentare die Dokumentation von Einstellungen erleichtern. Dieser Parser entfernt Kommentare, um gültiges JSON zu erzeugen, und bewahrt dabei die Datenstruktur.
Spezifikationen
Haeufige Anwendungsfaelle
- tsconfig.json und jsconfig.json für TypeScript/JavaScript-Projekte parsen
- VS-Code-settings.json und Erweiterungskonfigurationen lesen
- Cloudflare-wrangler.jsonc-Konfigurationsdateien verarbeiten
- ESLint-, Prettier- und andere Tool-Konfigurationen mit Inline-Dokumentation bearbeiten
Funktionen
- Einzeilige Kommentare parsen (// Kommentar)
- Mehrzeilige Kommentare parsen (/* Kommentar */)
- Abschließende Kommas verarbeiten (häufig in JSONC-Dateien)
- Kommentare entfernen, um gültiges JSON zu erzeugen
- Alle Standard-JSON-Parser-Funktionen (Baumansicht, Konvertierung)
Beispiele
TypeScript-Konfiguration
Ausprobieren →Eine tsconfig.json-Datei mit Kommentaren, die Compiler-Optionen erklären.
{
// Compiler options for the project
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
/* Enable all strict type checking options */
"strict": true
}
}Tipps
- VS Code, TypeScript und viele moderne Tools unterstützen JSONC nativ.
- Beim Teilen von Konfigurationen prüfen Sie, ob die Tools der Empfänger Kommentare unterstützen.
- Konvertieren Sie zu Standard-JSON, indem Sie Kommentare entfernen, wenn Tools striktes JSON erfordern.
Verstaendnis JSON mit Kommentaren
JSONC (JSON with Comments) ist eine Erweiterung von Standard-JSON, die JavaScript-ähnliche einzeilige (//) und mehrzeilige (/* */) Kommentare sowie abschließende Kommas nach dem letzten Element in Arrays und Objekten erlaubt. Obwohl es kein offizieller Standard ist, hat sich JSONC zum De-facto-Format für entwicklerorientierte Konfigurationsdateien entwickelt, in denen Inline-Dokumentation die Wartbarkeit verbessert.
Microsoft hat JSONC durch Visual Studio Code populär gemacht, das es für settings.json, keybindings.json, launch.json und extensions.json verwendet. TypeScripts tsconfig.json und JavaScripts jsconfig.json sind JSONC-Dateien, ebenso wie viele ESLint-, Prettier- und Babel-Konfigurationsdateien, wenn die .json-Erweiterung verwendet wird. Cloudflares wrangler.jsonc verwendet explizit die .jsonc-Erweiterung, um die Kommentarunterstützung zu signalisieren.
Der Hauptvorteil von JSONC gegenüber reinem JSON ist die Dokumentation. Konfigurationsdateien enthalten oft Einstellungen, deren Zweck allein aus dem Schlüsselnamen nicht ersichtlich ist. Kommentare ermöglichen es Entwicklern zu erklären, warum eine Einstellung existiert, welche gültigen Werte es gibt und welche Konsequenzen Änderungen haben können. Abschließende Kommas reduzieren den Rauschen in der Versionskontrolle, da das letzte Element das gleiche Format wie alle anderen haben kann, sodass das Hinzufügen eines neuen Elements nur eine geänderte Zeile im Diff zeigt statt zwei.
Unter der Haube arbeiten JSONC-Parser, indem sie Kommentare und abschließende Kommas entfernen, bevor das Ergebnis an einen Standard-JSON-Parser übergeben wird. Das bedeutet, das Datenmodell ist identisch mit JSON — Kommentare sind Metadaten für Menschen, nicht Daten für Programme. Bei der Konvertierung von JSONC zu JSON für Tools, die strikte JSON-Konformität erfordern, werden die Kommentare einfach entfernt. Microsofts node-jsonc-parser-Bibliothek, die in VS Code verwendet wird, ist die Referenzimplementierung für JSONC-Parsing.
JSONC ist kein offizieller Standard, der durch einen RFC oder eine ECMA-Spezifikation definiert ist. Es ist eine Konvention, die von Microsoft durch VS Code und TypeScript populär gemacht wurde, mit einem Verhalten, das durch die jsonc-parser-Bibliothek als Referenzimplementierung wohldefiniert ist. Andere Tools, die JSONC unterstützen — ESLint, Prettier und verschiedene Editoren — folgen denselben Konventionen für einzeilige Kommentare, mehrzeilige Kommentare und abschließende Kommas. Häufige JSONC-Dateien sind tsconfig.json und jsconfig.json (TypeScript/JavaScript), VS-Code-Einstellungsdateien (settings.json, launch.json, tasks.json, keybindings.json), wrangler.jsonc (Cloudflare Workers), devcontainer.json (VS Code Dev Containers) und verschiedene andere Tool-Konfigurationen. Jede JSON-Datei, die hauptsächlich von Entwicklern bearbeitet wird und von Kommentaren profitieren könnte, unterstützt wahrscheinlich JSONC.
JSONC sollte nur für Konfigurationsdateien verwendet werden, die von Tools mit expliziter JSONC-Unterstützung gelesen werden. API-Antworten, Datenspeicherung und Kommunikation zwischen Diensten sollten immer Standard-JSON verwenden, da die meisten JSON-Parser Kommentare als Syntaxfehler ablehnen. Um eine JSONC-Konfigurationsdatei programmatisch mit einem Standard-JSON-Parser zu verarbeiten, entfernen Sie zuerst die Kommentare mithilfe einer JSONC-fähigen Bibliothek.
JSONC ist konservativer als JSON5, das eine umfangreichere Obermenge von JSON ist. Während JSONC nur Kommentare und abschließende Kommas hinzufügt, erlaubt JSON5 auch Strings in einfachen Anführungszeichen, nicht-quotierte Objektschlüssel, hexadezimale Zahlen, führende und abschließende Dezimalpunkte, Infinity und NaN sowie mehrzeilige Strings. JSONC hat breitere Toolunterstützung im Entwickler-Ökosystem, während JSON5 in spezifischen Konfigurationsdateien wie Babels babel.config.json5 verwendet wird, aber insgesamt eine geringere Verbreitung hat.