JSON vs JSON5 vs JSONC
Shrnutí: Přísné nadmnožiny v pořadí: JSONC přidává komentáře; JSON5 přidává jednoduché uvozovky, klíče bez uvozovek, koncové čárky a hexadecimální čísla. Špatná volba rozbije API, ne váš editor.

Stručně: standardní JSON používejte vždy, když data překračují hranici systému, a JSONC jen pro lokální konfiguraci, kterou upravují lidé; JSON5 sáhněte, když potřebujete jednoduché uvozovky, koncové čárky nebo klíče bez uvozovek, ale nejprve potvrďte, že ho zavaděč podporuje.
V jedné větě: JSONC je JSON plus komentáře; JSON5 je JSON plus zvyky z JavaScriptu.
Matice funkcí
| Funkce | JSON | JSONC | JSON5 |
|---|---|---|---|
| Řetězce v dvojitých uvozovkách | ✅ | ✅ | ✅ |
| Řetězce v jednoduchých uvozovkách | ❌ | ❌ | ✅ |
| Klíče bez uvozovek | ❌ | ❌ | ✅ |
Řádkové komentáře // |
❌ | ✅ | ✅ |
Blokové komentáře /* */ |
❌ | ✅ | ✅ |
| Koncové čárky | ❌ | ❌ | ✅ |
Hexadecimální čísla 0xFF |
❌ | ❌ | ✅ |
Infinity / NaN |
❌ | ❌ | ✅ |
| Víceřádkové řetězce | ❌ | ❌ | ✅ |
| Čitelné standardními parsery | ✅ | ❌ | ❌ |
Pozor, JSONC řeší jen komentáře. Mnoho lidí předpokládá, že „JSON, který povoluje komentáře“, povoluje i koncové čárky; tsconfig.json na ní stále selže.
K čemu je který
JSON — výměna dat. API, fronty, JSON sloupce v databázích, logy. Cokoli stroj-stroj.
JSONC — konfigurace editoru. VS Code tyto soubory parsuje sám, takže JSON.parse je nikdy nevidí. Neexistuje RFC; je to de facto konvence vedená Microsoftem.
JSON5 — benevolentní nadmnožina pro lidi. Cílem bylo „konfigurace, která vypadá jako objektový literál JavaScriptu“. Hodí se nejlépe pro soubory .json5 načítané nástroji sestavení; nejširší syntaxe a nejužší podpora nástrojů.
Volba
| Situace | Zvolte |
|---|---|
| Těla požadavků nebo odpovědí | JSON, žádná alternativa |
| JSON sloupce v MySQL / PostgreSQL | JSON, jejich funkce nic jiného nepřijímají |
| Konfigurace projektu, která potřebuje vysvětlení | JSONC, pokud je podporováno, jinak YAML |
| Chcete uvolněnost ve stylu JS | JSON5, po potvrzení, že zavaděč ho podporuje |
| Budou ho upravovat ne‑inženýři | YAML, odsazení vítězí nad závorkami |
Jedna snadná past
Parsování souboru JSONC jako striktního JSON produkuje chybu, která ukazuje na komentář:
SyntaxError: Unexpected token / in JSON at position 42
Než komentář smažete, zkontrolujte, zda soubor nemá být JSONC. Smažete ho a možná o dva řádky níž narazíte na koncovou čárku.
Časté dotazy
Jak volit mezi JSONC a JSON5?
JSONC použijte, když je komentář jediné, co potřebujete: přidává // a /* */ nad JSON a používá ho settings.json a tsconfig.json ve VS Code. JSON5 použijte, když chcete také jednoduché uvozovky, klíče bez uvozovek, koncové čárky, hexadecimální čísla nebo víceřádkové řetězce. Oba závisí na zavaděči, takže potvrďte, že nástroj, který soubor čte, je podporuje.
Proč nelze soubor JSONC číst jako standardní JSON?
JSONC je de facto konvence, nikoli samostatné RFC, takže standardní parsery komentáře odmítají. JSON.parse na takovém souboru vyhodí Unexpected token /, což ukazuje na komentář, nikoli na data. Jako JSONC se má psát jen konfigurace čtená editorem nebo specializovaným parserem.
Mám poslat soubor JSON5 do API?
Ne. API, JSON sloupce v databázích i fronty parsují striktní JSON, takže jednoduché uvozovky, klíče bez uvozovek a koncové čárky z JSON5 jsou odmítnuty. JSON5 je pro lokální konfiguraci, kterou upravují lidé; převeďte ho na standardní JSON, než překročí hranici systému.