Rozdíly formátů
| Formát | Komentáře | Koncové čárky | Jednoduché uvozovky | Definice |
|---|---|---|---|---|
| JSON | ne | ne | ne | RFC 8259 / ECMA-404 |
| JSONC | ano | podle implementace | ne | konvence nástroje; ověř jeho parser |
| JSON5 | ano | ano | ano | specifikace JSON5 1.0.0 |
| YAML 1.2 | ano | jiná gramatika | ano i prosté skaláry | specifikace YAML |
Pro veřejné API používej formát, který API výslovně přijímá. application/json očekává standardní JSON. Konfigurace editoru může používat volnější pravidla, aniž by je tím získalo celé API.
JSONC: JSON s komentáři
{
// Nastavení s komentářem
"jmeno": "Jana",
"pocet": 16
} JSONC obvykle přidává řádkové a blokové komentáře. Není to jeden standard RFC. VS Code dovoluje také koncové čárky, ale upozorňuje na ně; jiné parsery je odmítají nebo vyžadují přepínač. Řetězce a názvy ponech ve dvojitých uvozovkách.
Přípona .json sama není zárukou formátu: například konfigurace VS Code se komentáři řídí pravidly programu, který soubor čte. Podrobnosti uvádí dokumentace editoru.
JSON5: další rozšíření pro ruční editaci
// Nastavení pro parser JSON5
{
jmeno: 'Jana',
pocet: 0x10,
} JSON5 přidává mimo jiné neuzavřené názvy odpovídající identifikátorům, jednoduché uvozovky, koncové čárky, šestnáctková čísla a NaN či Infinity. Nepřidává funkce ani libovolné výrazy JavaScriptu. Použij parser JSON5, nikoli eval().
Po převodu do JSON zkontroluj přesnost čísel a nečíselné hodnoty: standardní JSON nemá reprezentaci NaN a Infinity. To může vyžadovat změnu dat, nikoli jen přepsání syntaxe.
YAML: odsazení, skaláry a kotvy
jmeno: Jana
pocet: 16
aktivni: true
polozky:
- Hrnek
- Podtácek YAML zapisuje mapy a sekvence i pomocí odsazení. Umí kotvy a aliasy a jeho tagy mohou rozlišovat další typy. YAML 1.2 byl navržen s kompatibilitou s JSON; konkrétní knihovna ale může používat pravidla YAML 1.1 nebo jiné schéma typování.
Pokud má hodnota zůstat řetězcem, dej ji do uvozovek. U nedůvěryhodného vstupu použij bezpečný parser, omez velikost a expanzi aliasů a nepovoluj vytváření aplikačních objektů z tagů. Konverze může zahodit komentáře, styl, kotvy i typy, které JSON nezná.
Doporučený postup
- Zjisti formát a pravidla příjemce.
- Načti vstup parserem správného formátu.
- Ověř, že hodnoty mají požadované typy.
- Výstup vytvoř serializátorem JSON a ověř JSON Schema.
Nahrazení komentářů regulárním výrazem poškodí například URL uvnitř řetězce. Parser musí rozlišovat komentář od obsahu hodnoty.