Formátovač a validátor JSON
Vložte JSON a prehľadne ho naformátujte, minifikujte alebo zoraďte jeho kľúče. Ak sa ho nepodarí spracovať, formátovač ukáže riadok a stĺpec, kde sa parser zastavil, a pod problémové miesto pridá šípku. Chýbajúcu čiarku v odpovedi s 3 000 riadkami tak nájdete za pár sekúnd.
0 znakov · 0 slov · 0 riadkov
0 znakov · 0 slov · 0 riadkov
Všetko prebieha priamo v tejto karte prehliadača. Váš text sa nikdy nenahráva ani neukladá.
Typy hodnôt JSON
RFC 8259 povoľuje presne tieto hodnoty. Objekty a polia sa môžu vnárať; všetko ostatné sú koncové hodnoty.
| Typ | Príklad | Pravidlo |
|---|---|---|
| Objekt | {"id": 7, "tags": ["a"]} | Kľúče musia byť reťazce v dvojitých úvodzovkách; členovia sú oddelení čiarkami a za posledným nesmie byť čiarka. |
| Pole | [1, "two", null] | Usporiadaný zoznam ľubovoľných hodnôt, povolené sú zmiešané typy. |
| Reťazec | "caf\u00e9 \"quoted\"" | Iba dvojité úvodzovky; riadiace znaky musia byť escapované; escape \u používa štyri hex číslice. |
| Číslo | -12.5e3 | Iba desiatkové: voliteľné mínus, bez úvodných núl, voliteľná desatinná časť a exponent. Bez NaN a Infinity. |
| true, false a null | true | Malými písmenami, bez úvodzoviek. |
Čo parser odmieta
Každý z nasledujúcich vstupov bol pri zostavení tejto stránky odovzdaný tomu istému JSON.parse, aké používa formátovač.
| Vstup | Problém | JSON.parse |
|---|---|---|
{"a": 1,} | Čiarka na konci | Odmietnuté |
{'a': 1} | Reťazce v jednoduchých úvodzovkách | Odmietnuté |
{"a": 1 /* note */} | Komentáre | Odmietnuté |
{a: 1} | Kľúč bez úvodzoviek | Odmietnuté |
{"n": NaN} | NaN nie je číslo v JSON | Odmietnuté |
{"n": 012} | Úvodná nula | Odmietnuté |
{"n": 0x1F} | Hexadecimálne číslo | Odmietnuté |
Escape sekvencie v reťazcoch JSON
| Znak | Zápis v JSON |
|---|---|
| Dvojitá úvodzovka | "\"" |
| Opačná lomka | "\\" |
| Posun riadka | "\n" |
| Tabulátor | "\t" |
| Návrat vozíka | "\r" |
| Riadiaci znak U+0001 | "\u0001" |
| Lomka (escape je voliteľný) | "/" |
| Znak mimo ASCII (escape netreba) | "é" |
Pravidlá, ktoré platný dokument JSON dodržiava
JSON definuje norma RFC 8259 (obsahovo zhodná s ECMA-404). Dokument tvorí jedna hodnota: objekt, pole, reťazec, číslo, true, false alebo null. Kľúče objektov sú vždy reťazce v dvojitých úvodzovkách. Reťazce používajú iba dvojité úvodzovky a musia escapovať úvodzovku, spätnú lomku a každý riadiaci znak pod U+0020; tabulátory a zalomenia riadkov vnútri reťazca sa preto zapisujú ako \t a \n. RFC 8259 navyše vyžaduje UTF-8 pre JSON vymieňaný medzi systémami.
Čísla sú desiatkové: bez úvodných núl, bez hexadecimálneho zápisu, bez NaN alebo Infinity a bez znamienka plus vpredu. Formát nemá komentáre ani koncové čiarky. Posledné dve pravidlá spôsobujú väčšinu chýb v praxi, pretože objektové literály v JavaScripte, JSON5 aj mnohé konfiguračné súbory povoľujú obe. Referenčná tabuľka nižšie vznikla tak, že sa každá bežná chyba poslala do rovnakého parsera, aký používa formátovač.
Formátovanie, minifikácia, zoradenie
Formátovanie pridá zalomenia riadkov a odsadenie, aby bola štruktúra čitateľná; dve medzery sú najbežnejší štýl v projektoch v JavaScripte, štyri medzery sú obvyklá voľba pri json.dumps(indent=4) v Pythone a tabulátory nechávajú každému čitateľovi zvoliť šírku. Minifikácia odstráni všetky nepodstatné medzery, čím zmenší dáta API a umožní zapísať dokument na jeden riadok do logov alebo premenných prostredia.
Zoradenie kľúčov usporiada členy každého objektu abecedne, rekurzívne. Objekty JSON sú podľa definície neusporiadané, takže zoradenie nemení význam, no výrazne uľahčí porovnanie dvoch dokumentov z rôznych systémov. Majte na pamäti, že pri parsovaní sa čísla menia na dvojité čísla (double) v JavaScripte: celé čísla nad 2^53 (9 007 199 254 740 992), napríklad niektoré ID z databáz, pri preformátovaní strácajú presnosť, preto ich uchovávajte ako reťazce.
Z JSON do iných formátov
Formátovaný dokument sa číta ľahšie, no niekedy ho potrebujete v inej podobe. Pole objektov sa stane tabuľkou pomocou JSON do CSV a konvertor dát prevádza celé súbory medzi JSON, XML, YAML a CSV.
Často kladené otázky
- Prečo formátovač odmieta môj JSON s komentármi?
- Štandardný JSON nemá syntax pre komentáre; RFC 8259 ju zámerne vynecháva. Komentáre odstráňte, alebo súbor ponechajte ako JSONC či JSON5, ak ich nástroj, ktorý ho číta, podporuje.
- Čo znamená „Unexpected token“ v chybe JSON?
- Parser narazil na znak, ktorý sa na danej pozícii nesmie vyskytnúť, napríklad jednoduchú úvodzovku, koncovú čiarku pred } alebo kľúč bez úvodzoviek. Zobrazený riadok a stĺpec ukazujú na tento znak.
- Zmení zoradenie kľúčov moje dáta?
- Nie. Poradie členov objektu v JSON nemá význam, takže zoradený dokument je rovnocenný. Poradie v poliach je významné a nikdy sa nemení.
- Prečo sa dlhé číslo po formátovaní zmenilo?
- JavaScript ukladá čísla ako 64-bitové desatinné čísla, ktoré presne vyjadrujú celé čísla len do 2^53. Väčšie ID sa pri parsovaní zaokrúhlia; prenášajte ich ako reťazce, aby sa zachovala každá číslica.
- Môžem namiesto vkladania naformátovať súbor JSON?
- Otvorte súbor v ľubovoľnom textovom editore, vyberte všetko a vložte sem. Veľmi veľké súbory s desiatkami megabajtov môžu spomaliť kartu, kým textové pole vykresľuje obsah.