JSON Formátovač: Zlepšení & Validace JSON Online Zdarma
Okamžitě formátujte minifikovaný JSON se správným odsazením. Bezplatný online JSON formátovač validuje syntaxi, vylepšuje kód a urychluje ladění. Funguje v prohlížeči s formátováním v reálném čase.
Formátovač JSON
Formátujte a zkrášlete svůj JSON pomocí tohoto jednoduchého nástroje - formátování probíhá automaticky při psaní!
Formátovaný JSON se zde zobrazí automaticky...
Dokumentace
Co je formátovač JSON?
Formátovač JSON je nástroj, který převede text JSON (JavaScript Object Notation) do podoby s odsazením a zalomením řádků, aniž by změnil samotná data. JSON je textový formát pro ukládání a odesílání strukturovaných dat, založený na dvojicích název/hodnota a seznamech. Programy obvykle šetří místo odstraněním všech nadbytečných mezer, čímž vznikne jediný hustý řádek, který se člověku obtížně čte. Formátovač, nazývaný také zkrášlovač nebo pretty printer, tyto mezery konzistentně doplní, aby byla struktura viditelná. Tento nástroj formátuje JSON automaticky při jeho psaní nebo vložení. Neobsahuje tlačítko pro formátování; výstup se aktualizuje po každém stisknutí klávesy. Tlačítko reset vymaže vstup a tlačítko kopírování zkopíruje naformátovaný výsledek.
Pravidla syntaxe JSON
JSON je definován specifikací označovanou jako RFC 8259. Má dva typy kontejnerů:
Objekty obsahují dvojice název/hodnota ve složených závorkách:
1{"name": "John", "age": 30, "city": "New York"}
2Pole obsahují uspořádané seznamy v hranatých závorkách:
1["apple", "banana", "cherry"]
2Hodnota v JSON musí být jedním ze šesti typů: řetězec, číslo, logická hodnota (true nebo false), null, objekt nebo pole.
Několik pravidel způsobuje většinu chyb:
- Názvy vlastností musí být uzavřeny v dvojitých uvozovkách.
{name: "John"}je neplatné; správně musí být{"name": "John"}. - Řetězce musí používat dvojité, nikoli jednoduché uvozovky.
- Za poslední položkou v objektu nebo poli nesmí být čárka (čárky na konci nejsou povoleny).
- JSON nemá syntaxi pro komentáře, přestože jeho vzhled se závorkami vychází z JavaScriptu.
- JSON neobsahuje
undefined. Pro chybějící hodnotu použijtenull.
Častou chybou je vložení literálu objektu JavaScriptu namísto JSON. {name: 'John', age: undefined} je platný JavaScript, ale nikoli platný JSON. Verze v JSON je {"name": "John", "age": null}.
Jak tento formátovač JSON funguje
Mnoho formátovačů JSON zpracuje text pomocí JSON.parse(), aby vytvořily objekt JavaScriptu, a poté jej pomocí JSON.stringify() převedou zpět na text s mezerami. Tato cesta tam a zpět má vedlejší účinek: čísla v JavaScriptu jsou plovoucí čísla s dvojitou přesností podle IEEE 754, která po překročení 2^53 − 1 (9,007,199,254,740,991) nedokážou přesně reprezentovat každé celé číslo. Identifikátor jako 9007199254740993 se po tomto převodu tam a zpět může změnit na 9007199254740992.
Tento nástroj se tomuto kroku vyhýbá. Vstup čte znak po znaku pomocí malého ručně napsaného analyzátoru a místo převodu každého čísla nebo řetězce na hodnotu JavaScriptu daný úsek textu přesně zkopíruje tak, jak je napsán, a poté jej umístí na správnou úroveň odsazení. Protože se čísla nikdy nepřevádějí na typ float, zachovají si celá čísla libovolné velikosti přesné číslice. Pokud je v objektu stejný klíč uveden dvakrát, obě kopie zůstanou na svém místě, místo aby byly sloučeny do poslední, jak by tomu bylo při vytvoření objektu JavaScriptu.
Postup krok za krokem:
- Načte další token (objekt, pole, řetězec, číslo,
true,falsenebonull). - Ověří jej podle gramatiky JSON. Pokud porušuje nějaké pravidlo, například obsahuje klíč bez uvozovek nebo čárku na konci, odmítne jej.
- Zkopíruje text tokenu beze změny do výstupu.
- Přidá zalomení řádku a pro každou úroveň zanoření uvnitř objektu nebo pole odsazení o 2 mezery. Prázdný objekt nebo pole zůstane na jednom řádku, jako
{}nebo[]. - Opakuje postup, dokud není načten celý vstup.
Odsazení je pevně nastaveno na 2 mezery; nelze je změnit. Když je vstupní pole prázdné, panel výstupu zobrazuje zástupný text „Formatted JSON will appear here automatically...“. Pokud vstup porušuje pravidlo JSON, nástroj zobrazí zprávu „Invalid JSON: Please check your input“ namísto technické zprávy analyzátoru s přesnou pozicí znaku. Vestavěná funkce prohlížečů JSON.parse() naproti tomu pozici znaku v chybovém textu uvádí.
Příklad výpočtu
Tento minifikovaný vstup:
1{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"Anytown","state":"CA"},"hobbies":["reading","hiking","photography"]}
2se změní na:
1{
2 "name": "John Doe",
3 "age": 30,
4 "address": {
5 "street": "123 Main St",
6 "city": "Anytown",
7 "state": "CA"
8 },
9 "hobbies": [
10 "reading",
11 "hiking",
12 "photography"
13 ]
14}
15Každý zanořený objekt nebo pole je odsazen o jednu úroveň více než jeho rodič, takže vztah mezi address a jeho třemi poli je na první pohled viditelný.
Druhý příklad ukazuje, proč je důležité literály kopírovat. Tento vstup:
1{"id":9007199254740993}
2se naformátuje takto:
1{
2 "id": 9007199254740993
3}
4Číslice zůstanou přesně tak, jak byly napsány. Formátovač založený na JSON.parse() a následném JSON.stringify() by toto číslo místo toho potichu změnil na 9007199254740992.
Časté chyby v JSON
- Název vlastnosti bez uvozovek:
{name: "John"}. Oprava:{"name": "John"}. - Čárka na konci:
{"age": 30,}. Oprava: odstraňte čárku před uzavírací složenou závorkou. - Nesprávně spárované závorky:
{"data": [1, 2}. Oprava: před uzavřením objektu uzavřete pole pomocí]. - Neuzavřený řetězec:
{"name": "John}. Oprava: doplňte chybějící uzavírací uvozovku. - Jednoduché uvozovky:
{'name': 'John'}. Oprava: použijte dvojité uvozovky. undefined,NaNneboInfinity: žádná z těchto hodnot není v JSON platná. Použijtenullnebo řetězec.
Častým zdrojem těchto chyb je přímé zkopírování objektu z konzole prohlížeče nebo protokolu serveru, který často obsahuje syntaxi platnou pouze v JavaScriptu a před použitím jako JSON je třeba ji upravit.
Kdy použít formátovač JSON
Formátovače JSON se nejčastěji používají ke kontrole odpovědí API, které se obvykle odesílají v minifikované podobě kvůli úspoře přenosové kapacity. Ručně se používají také ke kontrole konfiguračních souborů, jako jsou package.json nebo composer.json, ke čtení dat zkopírovaných z místního úložiště nebo konzole prohlížeče a k pochopení struktury datové sady přijaté z jiného systému.
Jiné způsoby formátování JSON
- Vývojářské nástroje prohlížeče: Chrome, Edge a Firefox formátují odpovědi JSON automaticky v podokně náhledu karty Síť.
- Editory kódu: Visual Studio Code formátuje otevřený soubor JSON pomocí Alt+Shift+F (na Macu Shift+Option+F). Většina editorů má odpovídající klávesovou zkratku nebo rozšíření pro formátování.
- Příkazový řádek:
jq(jq . file.json) i vestavěný nástroj Pythonupython -m json.tool file.jsonformátují JSON v terminálu.
Začlenění formátování JSON do kódu
Většina programovacích jazyků obsahuje knihovnu JSON s možností nastavit odsazení. V JavaScriptu:
1const formatted = JSON.stringify(JSON.parse(rawJson), null, 2);
2V Pythonu:
1import json
2formatted = json.dumps(json.loads(raw_json), indent=2)
3Oba přístupy analyzují text do nativní datové struktury a poté jej znovu serializují s mezerami. To se snadno napíše, ale může to změnit čísla. JavaScript ukládá každé číslo jako číslo s dvojitou přesností, takže 9007199254740993 se vrátí jako 9007199254740992. Python zachovává celá čísla přesně, protože velikost pythonovských celých čísel není omezena, ale přesto přepíše 1.0e2 na 100.0 a změní 1e999 na Infinity, což není platný JSON. Aplikace, které potřebují přesná velká celá čísla, například identifikátory databázových záznamů, je často ukládají v JSON jako řetězce, nikoli jako čísla.
Stručná historie JSON
Douglas Crockford definoval JSON na počátku 2000 let. Jeho syntaxi odvodil z literálů objektů JavaScriptu, ale navrhl jej tak, aby byl použitelný z jakéhokoli jazyka. RFC 4627 jej formalizovala v roce 2006. Rychle se rozšířil, protože se zapisoval stručněji než XML a přímo odpovídal objektům JavaScriptu, což bylo důležité, když webové aplikace začaly načítat data na pozadí namísto opětovného načítání celých stránek. Do 2010 let se stal výchozím formátem pro REST API a databáze, jako je MongoDB.
Často kladené otázky
Co je formátovač JSON? Nástroj, který do textu JSON přidává odsazení, zalomení řádků a mezery, aby se jeho struktura snadno četla, aniž by měnil data.
Mění formátování data? Ne. Formátování mění pouze mezery. Tento nástroj kopíruje každý řetězec a číslo přesně tak, jak byly napsány, takže hodnoty ve formátovaném výstupu přesně odpovídají vstupu, včetně čísel příliš velkých na přesné uložení jako číslo JavaScriptu.
Proč se zobrazuje chyba „Invalid JSON“? Vstup porušuje pravidlo JSON. Mezi běžné příčiny patří názvy vlastností bez uvozovek, čárka na konci, jednoduché uvozovky, neuzavřený řetězec nebo nesprávně spárovaná závorka. Tento nástroj nezobrazuje přesnou pozici problematického znaku; kontrola vstupu podle výše uvedených pravidel ji obvykle rychle odhalí.
Mohou být v JSON komentáře? Ne. Specifikace je nepovoluje. Formáty jako JSONC a JSON5 přidávají k syntaxi JSON podporu komentářů pro případy, kdy je to užitečné, například u konfiguračních souborů.
Jaké je standardní odsazení JSON? Nejběžnější konvencí ve vývoji webu jsou dvě mezery a tento nástroj je používá. Některé příručky stylu používají místo toho čtyři mezery nebo tabulátory; samotná specifikace JSON žádné konkrétní odsazení nevyžaduje.
Jaký je rozdíl mezi JSON.parse() a JSON.stringify()?
JSON.parse() převede řetězec JSON na hodnotu JavaScriptu. JSON.stringify() provede opačný převod: hodnotu JavaScriptu převede na řetězec JSON a přijímá argument pro odsazení při zkrášlování výstupu. Tento nástroj interně nepoužívá ani jednu z těchto funkcí, a proto dokáže přesně zachovat velká celá čísla.