JSON formázó és validátor
Illessze be a JSON-t, hogy olvashatóan formázza, minifikálja vagy rendezze a kulcsait. Ha nem értelmezhető, a formázó megmutatja a sort és az oszlopot, ahol az elemző elakadt, és egy jelölő mutat a hibára, így egy 3000 soros válaszban is másodpercek alatt megtalálja a hiányzó vesszőt.
0 karakter · 0 szó · 0 sor
0 karakter · 0 szó · 0 sor
Teljes egészében ebben a böngészőlapon fut. A szöveget soha nem töltjük fel és nem tároljuk.
JSON-értéktípusok
Az RFC 8259 pontosan ezeket az értékeket engedi meg. Az objektumok és tömbök egymásba ágyazhatók; minden más levélelem.
| Típus | Példa | Szabály |
|---|---|---|
| Objektum | {"id": 7, "tags": ["a"]} | A kulcsoknak idézőjelek közé tett karakterláncoknak kell lenniük; a tagokat vessző választja el, utolsó vessző nélkül. |
| Tömb | [1, "two", null] | Tetszőleges értékek rendezett listája, vegyes típusokkal is. |
| Karakterlánc | "caf\u00e9 \"quoted\"" | Csak dupla idézőjel; a vezérlőkaraktereket escape-elni kell; a \u escape négy hexadecimális számjegyet használ. |
| Szám | -12.5e3 | Csak decimális: elhagyható mínusz, nincs vezető nulla, elhagyható törtrész és kitevő. NaN és Infinity nem megengedett. |
| true, false és null | true | Kisbetűvel, idézőjel nélkül. |
Amit az elemző elutasít
Az alábbi bemeneteket ugyanazzal a JSON.parse függvénnyel futtattuk le, amelyet a formázó használ, az oldal létrehozásakor.
| Bemenet | Hiba | JSON.parse |
|---|---|---|
{"a": 1,} | Záró vessző | Elutasítja |
{'a': 1} | Szimpla idézőjeles karakterláncok | Elutasítja |
{"a": 1 /* note */} | Megjegyzések | Elutasítja |
{a: 1} | Idézőjel nélküli kulcs | Elutasítja |
{"n": NaN} | A NaN nem JSON-szám | Elutasítja |
{"n": 012} | Vezető nulla | Elutasítja |
{"n": 0x1F} | Hexadecimális szám | Elutasítja |
Escape-ek JSON-karakterláncokban
| Karakter | JSON-ban írva |
|---|---|
| Dupla idézőjel | "\"" |
| Fordított perjel | "\\" |
| Soremelés | "\n" |
| Tabulátor | "\t" |
| Kocsivissza | "\r" |
| U+0001 vezérlőkarakter | "\u0001" |
| Perjel (az escape nem kötelező) | "/" |
| Nem ASCII betű (escape nem szükséges) | "é" |
Szabályok, amelyeket egy érvényes JSON-dokumentum követ
A JSON-t az RFC 8259 határozza meg (tartalmilag megegyezik az ECMA-404-gyel). Egy dokumentum egyetlen értékből áll: ez lehet objektum, tömb, szöveg, szám, true, false vagy null. Az objektumkulcsok mindig idézőjelek közé tett szövegek. A szövegek kizárólag dupla idézőjelet használhatnak, és az idézőjelet, a fordított perjelet, valamint az U+0020 alatti összes vezérlőkaraktert escape-elni kell; a szövegben lévő tabulátorokat és sortöréseket ezért \t és \n formában kell írni. Az RFC 8259 azt is előírja, hogy a rendszerek között cserélt JSON UTF-8 kódolású legyen.
A számok tízes számrendszerben íródnak: nem lehet bennük vezető nulla, hexadecimális alak, NaN vagy Infinity, és előjelként sem állhat előttük pluszjel. A formátumban nincsenek megjegyzések és záró vesszők. Ez a két szabály okozza a legtöbb hibát a gyakorlatban, mert a JavaScript objektumliterálok, a JSON5 és sok konfigurációs fájl mindkettőt megengedi. Az alábbi referenciatáblázat úgy készült, hogy minden gyakori hibát ugyanazzal az értelmezővel futtattunk le, amelyet a formázó is használ.
Szép formázás, minifikálás, rendezés
A szépen formázott kimenet sortöréseket és behúzást ad, hogy a szerkezet olvasható legyen; a JavaScript-projektekben a két szóköz a leggyakoribb, a Python json.dumps(indent=4) hívásánál a négy szóköz a szokásos, a tabulátor pedig lehetővé teszi, hogy mindenki maga válassza meg a szélességet. A minifikálás eltávolít minden felesleges szóközt, ami csökkenti az API-adatforgalmat, és egy sorba fér el a dokumentum naplókhoz vagy környezeti változókhoz.
A kulcsok rendezése minden objektum tagjait ábécésorrendbe rakja, rekurzívan. A JSON-objektumok definíció szerint rendezetlenek, ezért a rendezés nem változtat a jelentésen, de a különböző rendszerekből származó dokumentumok sokkal könnyebben összehasonlíthatók lesznek. Vegye figyelembe, hogy az értelmezés a számokat JavaScript double típussá alakítja: a 2^53 (9 007 199 254 740 992) feletti egész számok, például egyes adatbázis-azonosítók, újraformázáskor elveszítik a pontosságukat, ezért ezeket tartsa szövegként.
JSON-ból más formátumokba
A formázott dokumentum könnyebben olvasható, de néha más alakra van szükség. Az objektumokból álló tömbből táblázat lesz a JSON CSV-be eszközzel, az adatátalakító pedig teljes fájlokat alakít át JSON, XML, YAML és CSV között.
Gyakori kérdések
- Miért utasítja el a formázó a megjegyzéseket tartalmazó JSON-t?
- A szabványos JSON-ban nincs megjegyzéssyntaxis; az RFC 8259 szándékosan kihagyja. Távolítsa el a megjegyzéseket, vagy tartsa meg a fájlt JSONC vagy JSON5 formátumban, ha az azt olvasó eszköz támogatja ezeket.
- Mit jelent az „Unexpected token” üzenet egy JSON-hibában?
- Az értelmező olyan karakterrel találkozott, amely azon a helyen nem szerepelhet, például szimpla idézőjellel, a } előtti záró vesszővel vagy idézőjel nélküli kulccsal. A megjelenített sor és oszlop erre a karakterre mutat.
- Megváltoztatja a kulcsok rendezése az adataimat?
- Nem. Az objektumtagok sorrendjének a JSON-ban nincs jelentése, így a rendezett dokumentum egyenértékű. A tömbök sorrendje számít, ezért azt soha nem változtatjuk meg.
- Miért változott meg egy hosszú szám a formázás után?
- A JavaScript a számokat 64 bites lebegőpontos értékként tárolja, amely csak 2^53-ig ábrázolja pontosan az egész számokat. A nagyobb azonosítókat az értelmezés kerekíti; szövegként továbbítva minden számjegy megmarad.
- Formázhatok JSON-fájlt is beillesztés helyett?
- Nyissa meg a fájlt bármelyik szövegszerkesztőben, jelölje ki az egészet, és illessze be ide. A több tíz megabájtos, nagyon nagy fájlok lelassíthatják a lapot, amíg a szövegmező megjeleníti őket.