Formátovač a validátor JSON
Vložte JSON a nechte ho přehledně naformátovat, minifikovat nebo seřadit klíče. Pokud ho nelze načíst, formátovač ukáže řádek a sloupec, kde parser skončil, a pod problémem zobrazí ukazatel. Chybějící čárku v odpovědi o 3 000 řádcích tak najdete během několika sekund.
0 znaků · 0 slov · 0 řádků
0 znaků · 0 slov · 0 řádků
Vše běží přímo v této záložce prohlížeče. Váš text se nikam nenahrává ani neukládá.
Typy hodnot JSON
RFC 8259 povoluje právě tyto hodnoty. Objekty a pole se vnořují; vše ostatní jsou koncové hodnoty.
| Typ | Příklad | Pravidlo |
|---|---|---|
| Objekt | {"id": 7, "tags": ["a"]} | Klíče musí být řetězce v dvojitých uvozovkách; členy se oddělují čárkami, bez čárky na konci. |
| Pole | [1, "two", null] | Uspořádaný seznam libovolných hodnot, povoleny jsou smíšené typy. |
| Řetězec | "caf\u00e9 \"quoted\"" | Pouze dvojité uvozovky; řídicí znaky se musí escapovat; escape \u používá čtyři hexadecimální číslice. |
| Číslo | -12.5e3 | Pouze desítkové: volitelné mínus, žádné nuly na začátku, volitelná desetinná část a exponent. Žádné NaN ani Infinity. |
| Literál (true, false, null) | true | Malá písmena, bez uvozovek. |
Co parser odmítne
Každý z níže uvedených vstupů byl při sestavení této stránky předán stejnému JSON.parse, který používá formátovač.
| Vstup | Problém | JSON.parse |
|---|---|---|
{"a": 1,} | Čárka na konci | Odmítnuto |
{'a': 1} | Řetězce v jednoduchých uvozovkách | Odmítnuto |
{"a": 1 /* note */} | Komentáře | Odmítnuto |
{a: 1} | Klíč bez uvozovek | Odmítnuto |
{"n": NaN} | NaN není číslo JSON | Odmítnuto |
{"n": 012} | Nula na začátku | Odmítnuto |
{"n": 0x1F} | Hexadecimální číslo | Odmítnuto |
Escape sekvence v řetězcích JSON
| Znak | Zápis v JSON |
|---|---|
| Dvojitá uvozovka | "\"" |
| Zpětné lomítko | "\\" |
| Posun řádku | "\n" |
| Tabulátor | "\t" |
| Návrat vozíku | "\r" |
| Řídicí znak U+0001 | "\u0001" |
| Lomítko (escape volitelný) | "/" |
| Znak mimo ASCII (escape není nutný) | "é" |
Pravidla, která platný dokument JSON dodržuje
JSON je specifikován normou RFC 8259 (obsahově shodnou s ECMA-404). Dokument tvoří jedna hodnota: objekt, pole, řetězec, číslo, true, false nebo null. Klíče objektů jsou vždy řetězce v dvojitých uvozovkách. Řetězce používají pouze dvojité uvozovky a je nutné escapovat uvozovku, zpětné lomítko a každý řídicí znak pod U+0020; tabulátory a zalomení řádků uvnitř řetězce se proto zapisují jako \t a \n. RFC 8259 také vyžaduje UTF-8 pro JSON předávaný mezi systémy.
Čísla jsou desítková: bez úvodních nul, bez hexadecimálního zápisu, bez NaN či Infinity a bez znaménka plus na začátku. Formát nemá komentáře ani koncové čárky. Právě tato poslední dvě pravidla způsobují většinu chyb v praxi, protože objektové literály v JavaScriptu, JSON5 i mnoho konfiguračních souborů obojí povolují. Referenční tabulka níže vznikla tak, že každá běžná chyba byla předložena stejnému parseru, který používá formátovač.
Formátování, minifikace, řazení
Formátování přidá zalomení řádků a odsazení, aby byla struktura čitelná; dvě mezery jsou nejběžnější styl v projektech v JavaScriptu, čtyři mezery se obvykle používají u json.dumps(indent=4) v Pythonu a tabulátory nechávají každého čtenáře zvolit si šířku. Minifikace odstraní všechny nepodstatné mezery, což zmenší data z API a umožní vměstnat dokument na jeden řádek pro logy či proměnné prostředí.
Seřadit klíče seřadí členy každého objektu abecedně, rekurzivně. Objekty JSON jsou z definice neuspořádané, takže řazení nemění význam, ale výrazně usnadňuje porovnání dvou dokumentů z různých systémů. Pamatujte, že při zpracování se čísla mění na čísla typu double v JavaScriptu: celá čísla nad 2^53 (9 007 199 254 740 992), například některá ID z databází, při přeformátování ztratí přesnost, proto je ukládejte jako řetězce.
Z JSON do jiných formátů
Zformátovaný dokument se čte snáze, ale někdy ho potřebujete v jiné podobě. Pole objektů se stane tabulkou pomocí JSON do CSV a převodník dat přesouvá celé soubory mezi JSON, XML, YAML a CSV.
Často kladené otázky
- Proč formátovač odmítá můj JSON s komentáři?
- Standardní JSON komentáře nepodporuje; RFC 8259 je záměrně vynechává. Komentáře odstraňte, nebo ponechte soubor jako JSONC či JSON5, pokud tyto formáty nástroj, který ho čte, podporuje.
- Co znamená „Unexpected token“ v chybě JSON?
- Parser narazil na znak, který se na dané pozici nesmí objevit, například apostrof, koncovou čárku před } nebo klíč bez uvozovek. Zobrazený řádek a sloupec ukazují právě na tento znak.
- Změní seřazení klíčů moje data?
- Ne. Pořadí členů objektu nemá v JSON žádný význam, takže seřazený dokument je rovnocenný. Pořadí v polích je významné a nikdy se nemění.
- Proč se po formátování změnilo dlouhé číslo?
- JavaScript ukládá čísla jako 64bitová čísla s plovoucí řádovou čárkou, která přesně reprezentují celá čísla jen do 2^53. Větší ID se při zpracování zaokrouhlí; přenášejte je jako řetězce, aby se zachovaly všechny číslice.
- Mohu místo vkládání naformátovat soubor JSON?
- Otevřete soubor v libovolném textovém editoru, vyberte vše a vložte sem. Velmi velké soubory o desítkách megabajtů mohou zpomalit záložku, zatímco se textové pole vykresluje.