UltKit

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.

Výstup

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.

TypPříkladPravidlo
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.5e3Pouze desítkové: volitelné mínus, žádné nuly na začátku, volitelná desetinná část a exponent. Žádné NaN ani Infinity.
Literál (true, false, null)trueMalá 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č.

VstupProblémJSON.parse
{"a": 1,}Čárka na konciOdmítnuto
{'a': 1}Řetězce v jednoduchých uvozovkáchOdmítnuto
{"a": 1 /* note */}KomentářeOdmítnuto
{a: 1}Klíč bez uvozovekOdmítnuto
{"n": NaN}NaN není číslo JSONOdmítnuto
{"n": 012}Nula na začátkuOdmítnuto
{"n": 0x1F}Hexadecimální čísloOdmítnuto

Escape sekvence v řetězcích JSON

ZnakZá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.