JSON Formázó: Szépítse és Ellenőrizze a JSON-t Online Ingyenesen
Formázza át a minifikált JSON-t azonnal megfelelő behúzással. Ingyenes online JSON formázó ellenőrzi a szintaxist, szépíti a kódot, és gyorsabbá teszi a hibakeresést. Böngészőben működik valós idejű formázással.
JSON Formázó
Formázza és szépítse meg JSON-ját ezzel az egyszerű eszközzel - a formázás automatikusan történik, ahogy gépel!
A formázott JSON automatikusan megjelenik itt...
Dokumentáció
Mi az a JSON-formázó?
A JSON-formázó olyan eszköz, amely a JSON (JavaScript Object Notation) szövegét behúzásokkal és sortörésekkel írja át anélkül, hogy magukat az adatokat megváltoztatná. A JSON strukturált adatok tárolására és továbbítására szolgáló egyszerű szöveges formátum, amely név/érték párokból és listákból épül fel. A programok általában helyet takarítanak meg az összes felesleges szóköz eltávolításával, így egyetlen, tömör sor jön létre, amelyet az emberek nehezen tudnak elolvasni. A formázó, amelyet szépítőnek vagy pretty printernek is neveznek, következetes módon visszaadja ezeket a szóközöket, így láthatóvá válik a struktúra. Ez az eszköz gépelés vagy beillesztés közben automatikusan formázza a JSON-t. Nincs formázógomb; a kimenet minden billentyűleütéskor frissül. A visszaállítás gomb törli a bemenetet, a másolás gomb pedig a formázott eredményt másolja.
A JSON szintaktikai szabályai
A JSON-t az RFC 8259 nevű specifikáció határozza meg. Két tárolótípusa van:
Az objektumok kapcsos zárójelek között tartalmazzák a név/érték párokat:
1{"name": "John", "age": 30, "city": "New York"}
2A tömbök szögletes zárójelek között tartalmaznak rendezett listákat:
1["apple", "banana", "cherry"]
2A JSON-ban egy értéknek a hat típus egyikébe kell tartoznia: karakterlánc, szám, logikai érték (true vagy false), null, objektum vagy tömb.
Néhány szabály okozza a legtöbb hibát:
- A tulajdonságneveket dupla idézőjelek közé kell tenni. A
{name: "John"}érvénytelen; helyette{"name": "John"}szükséges. - A karakterláncokhoz dupla idézőjelet kell használni, nem szimpla idézőjelet.
- Objektumban vagy tömbben az utolsó elem után nem állhat vessző (nem lehet záró vessző).
- A JSON-ban nincs megjegyzésszintaxis, annak ellenére, hogy a kapcsos és szögletes zárójelek használata a JavaScriptből származik.
- A JSON-ban nincs
undefined. Hiányzó értékhez használja anullértéket.
Gyakori hiba, hogy valaki JSON helyett JavaScript-objektumliterált illeszt be. A {name: 'John', age: undefined} érvényes JavaScript, de nem érvényes JSON. A JSON-változat: {"name": "John", "age": null}.
Így működik ez a JSON-formázó
Sok JSON-formázó a szöveget a JSON.parse() függvényen futtatja át, hogy JavaScript-objektumot hozzon létre, majd a JSON.stringify() függvénnyel alakítja vissza szöveggé, térközökkel. Ennek a körfolyamatnak van egy mellékhatása: a JavaScript számai IEEE 754 kettős pontosságú lebegőpontos számok, amelyek nem tudnak minden egész számot pontosan ábrázolni, miután azok meghaladják a 2^53 − 1 értéket (9,007,199,254,740,991). Egy olyan azonosító, mint a 9007199254740993, a körfolyamat után 9007199254740992 értékként jelenhet meg.
Ez az eszköz elkerüli ezt a lépést. A bemenetet karakterenként olvassa egy kis, kézzel írt elemzővel, és ahelyett, hogy minden számot vagy karakterláncot JavaScript-értékké alakítana, pontosan az eredeti formájában másolja át az adott szövegrészt, majd a megfelelő behúzási szintre helyezi. Mivel a számokat soha nem alakítja lebegőpontos számmá, bármilyen méretű egész szám megőrzi pontos számjegyeit. Ha egy objektumban ugyanaz a kulcs kétszer szerepel, mindkét példány a helyén marad, nem pedig csak az utolsó, ahogyan egy JavaScript-objektum létrehozásakor történne.
A folyamat lépésről lépésre:
- Olvassa be a következő tokent (objektumot, tömböt, karakterláncot, számot,
true,falsevagynull). - Ellenőrizze a JSON nyelvtana alapján. Utasítsa el, ha szabályt sért, például idézőjel nélküli kulcsot vagy záró vesszőt tartalmaz.
- Másolja a token szövegét változatlanul a kimenetbe.
- Szúrjon be sortörést, és a beágyazás minden szintjén 2 szóközzel növelje a behúzást az objektumon vagy tömbön belül. Az üres objektum vagy tömb egy sorban marad, például
{}vagy[]alakban. - Ismételje, amíg a teljes bemenetet be nem olvasta.
A behúzás rögzített értéke 2 szóköz; nincs lehetőség a módosítására. Amíg a beviteli mező üres, a kimeneti panelen a „Formatted JSON will appear here automatically...” helyőrző szöveg látható. Ha a bemenet megsérti valamelyik JSON-szabályt, az eszköz a pontos karakterpozíciót megadó technikai elemzői hibaüzenet helyett ezt jeleníti meg: „Invalid JSON: Please check your input”. Ezzel szemben a böngészők beépített JSON.parse() függvénye a hibaüzenetben megadja a karakterpozíciót.
Kidolgozott példa
Ez a tömörített bemenet:
1{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"Anytown","state":"CA"},"hobbies":["reading","hiking","photography"]}
2eredménye:
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}
15Minden beágyazott objektum vagy tömb a szülőjénél egy szinttel beljebb van, így az address és a három mezője közötti kapcsolat azonnal látható.
Egy második példa mutatja meg, miért fontos a literálok másolása. Ez a bemenet:
1{"id":9007199254740993}
2így lesz formázva:
1{
2 "id": 9007199254740993
3}
4A számjegyek pontosan úgy maradnak, ahogyan be lettek írva. Egy JSON.parse(), majd JSON.stringify() használatára épülő formázó ehelyett észrevétlenül 9007199254740992 értékre alakítaná ezt a számot.
Gyakori JSON-hibák
- Idézőjel nélküli tulajdonságnév:
{name: "John"}. Javítás:{"name": "John"}. - Záró vessző:
{"age": 30,}. Javítás: távolítsa el a záró kapcsos zárójel előtti vesszőt. - Nem egyező zárójelek:
{"data": [1, 2}. Javítás: az objektum lezárása előtt zárja le a tömböt a]jellel. - Le nem zárt karakterlánc:
{"name": "John}. Javítás: adja hozzá a hiányzó záró idézőjelet. - Szimpla idézőjelek:
{'name': 'John'}. Javítás: használjon dupla idézőjeleket. undefined,NaNvagyInfinity: ezek egyike sem érvényes JSON-érték. Használjonnullértéket vagy karakterláncot.
E hibák gyakori forrása, hogy valaki közvetlenül a böngésző konzoljából vagy egy szervernaplóból másol ki egy objektumot, amely gyakran csak JavaScriptben érvényes szintaxist tartalmaz, ezért a JSON érvényességéhez előbb meg kell tisztítani.
Mikor érdemes JSON-formázót használni?
A JSON-formázókat leggyakrabban API-válaszok vizsgálatára használják, amelyeket a sávszélesség megtakarítása érdekében általában tömörítve küldenek. Használhatók konfigurációs fájlok, például a package.json vagy composer.json kézi ellenőrzésére, a böngésző helyi tárhelyéről vagy konzoljából másolt adatok olvasására, valamint egy másik rendszerből kapott adathalmaz szerkezetének megértésére is.
A JSON formázásának egyéb módjai
- Böngésző fejlesztői eszközei: a Chrome, az Edge és a Firefox automatikusan formázza a JSON-válaszokat a Hálózat lap előnézeti paneljén.
- Kódszerkesztők: a Visual Studio Code az Alt+Shift+F billentyűkombinációval formázza a megnyitott JSON-fájlt (Macen a Shift+Option+F kombinációval). A legtöbb szerkesztőben van ennek megfelelő billentyűparancs vagy formázási bővítmény.
- Parancssor: a
jq(jq . file.json) és a Python beépítettpython -m json.tool file.jsonmodulja is JSON-t formáz terminálból.
JSON-formázás beépítése a kódba
A legtöbb programozási nyelv tartalmaz behúzási lehetőséggel rendelkező JSON-könyvtárat. JavaScriptben:
1const formatted = JSON.stringify(JSON.parse(rawJson), null, 2);
2Pythonban:
1import json
2formatted = json.dumps(json.loads(raw_json), indent=2)
3Mindkét megközelítés a szöveget natív adatstruktúrába elemzi, majd térközökkel újra sorosítja. Ezt egyszerű megírni, de megváltoztathatja a számokat. A JavaScript minden számot kettős pontosságú számként tárol, ezért a 9007199254740993 értéke 9007199254740992 formában tér vissza. A Python pontosan őrzi meg az egész számokat, mert a Python-egészeknek nincs méretkorlátjuk, de a 1.0e2 értéket így is 100.0 formában írja át, a 1e999 értéket pedig Infinity értékre alakítja, ami nem érvényes JSON. A pontos nagy egész számokat, például adatbázis-azonosítókat igénylő alkalmazások gyakran karakterláncként, nem számként tárolják ezeket a JSON-ban.
A JSON rövid története
Douglas Crockford a 2000-es évek elején határozta meg a JSON-t, a szintaxisát a JavaScript-objektumliterálokból merítve, de úgy alakítva ki, hogy bármely nyelvből használható legyen. Az RFC 4627 2006-ban szabványosította. Gyorsan elterjedt, mert rövidebb volt XML-nél, és közvetlenül JavaScript-objektumokra képezhető le; ez fontos volt, amikor a webalkalmazások teljes oldalak újratöltése helyett a háttérben kezdték lekérni az adatokat. A 2010-es évekre a REST API-k és az olyan adatbázisok, mint a MongoDB, alapértelmezett formátumává vált.
Gyakran ismételt kérdések
Mi az a JSON-formázó? Olyan eszköz, amely behúzással, sortörésekkel és térközökkel egészíti ki a JSON-szöveget, hogy annak szerkezete könnyen olvasható legyen, az adatok megváltoztatása nélkül.
Megváltoztatja a formázás az adatokat? Nem. A formázás csak a szóközöket változtatja meg. Ez az eszköz minden karakterláncot és számot pontosan úgy másol, ahogyan be lett írva, ezért a formázott kimenet értékei pontosan megegyeznek a bemenet értékeivel, beleértve azokat a számokat is, amelyek túl nagyok ahhoz, hogy JavaScript-számként pontosan tárolhatók legyenek.
Miért kapok „Invalid JSON” hibát? A bemenet nem felel meg a JSON egyik szabályának. Gyakori ok az idézőjelbe nem tett kulcsnév, a záró vessző, a szimpla idézőjel, a le nem zárt karakterlánc vagy a nem egyező zárójel. Ez az eszköz nem jeleníti meg a probléma pontos karakterpozícióját; a bemenetnek a fent felsorolt szabályok szerinti ellenőrzése általában gyorsan megtalálja a hibát.
Tartalmazhat a JSON megjegyzéseket? Nem. A specifikáció nem engedélyezi őket. Az olyan formátumok, mint a JSONC és a JSON5, a JSON-szintaxisra építve támogatják a megjegyzéseket olyan esetekben, amikor ez hasznos, például konfigurációs fájloknál.
Mi a szabványos JSON-behúzás? A két szóköz a webfejlesztés leggyakoribb konvenciója, és ezt használja ez az eszköz is. Egyes stílusútmutatók négy szóközt vagy tabulátort használnak; maga a JSON-specifikáció nem ír elő konkrét behúzást.
Mi a különbség a JSON.parse() és a JSON.stringify() között?
A JSON.parse() egy JSON-karakterláncot JavaScript-értékké alakít. A JSON.stringify() ennek a fordítottját végzi: egy JavaScript-értéket JSON-karakterlánccá alakít, és a csinos nyomtatáshoz behúzási argumentumot is elfogad. Ez az eszköz belsőleg egyik függvényt sem használja, ezért képes pontosan megőrizni a nagy egész számokat.