JSON formatter és validátor
Illesszen be bármilyen JSON-t a fenti mezőbe, és ez a JSON formatter és validátor már gépelés közben ellenőrzi. Az érvényes bemenetet a választott behúzással formázza, vagy egyetlen sorba tömöríti. Érvénytelen bemenetnél pontos hibaüzenetet kap a sor és az oszlop számával, kiemelt részlettel, a szokásos hibáknál pedig egy kattintásos javítással. Minden az Ön böngészőjében fut, így az API-válaszok, a konfigurációs fájlok és az exportok nem hagyják el a számítógépét.
Mit tud ez a JSON formatter
- JSON formázás 2 szóközzel, 4 szóközzel vagy tabulátorral. A kimenet megőrzi a kulcsok eredeti sorrendjét, hacsak nem jelöli be a Kulcsok rendezése opciót.
- JSON tömörítés (minify): eltávolít minden szóközt és sortörést. Az eredmény alatti méretkijelzés megmutatja, hány bájtot takarított meg.
- JSON validálás élőben az RFC 8259, vagyis a jelenlegi JSON-szabvány szerint. Az állapotsor abban a pillanatban zöldre vált, amikor a dokumentum helyes.
- Gyakori hibák automatikus javítása: felesleges vesszők, egyszeres idézőjelek, idézőjel nélküli kulcsok, megjegyzések, Python-stílusú
True,NoneésNaN, valamint.5vagy+1alakú számok. - Fájlok betöltése a Fájl megnyitása gombbal vagy egy
.jsonfájl bemenetre húzásával. Az eredményt utána letöltheti, vagy visszaküldheti a bemenetbe egy újabb körhöz.
Miért fontosabb a hibaüzenet, mint a piros szín
A legtöbb online validátor csak annyit közöl, hogy valami hibás. A böngészők sem sokkal jobbak: a JSON.parse a Chrome-ban azt írja ki, hogy Unexpected token } in JSON at position 148, a Firefox szerint expected property name or '}', és egyik sem mondja meg, melyik sort kell megnézni. Ennek az eszköznek saját parsere van, amely megjegyzi, hol kezdődik minden token. Amikor elakad, megkapja a sor és az oszlop számát, az érintett sor részletét egy ^ jellel a hibás karakter alatt, valamint egy közérthető tippet, például Valószínűleg hiányzik egy vessző két tulajdonság között. Az Ugrás a hibához gomb a kurzort egyenesen erre a helyre viszi a bemenetben.
A beillesztett dokumentumokban ezeket a hibákat látjuk a leggyakrabban:
| Bemenet | Probléma | Helyes JSON |
|---|---|---|
{'name': 'Ada'} | egyszeres idézőjelek | {"name": "Ada"} |
{name: "Ada"} | idézőjel nélküli kulcs | {"name": "Ada"} |
[1, 2, 3,] | felesleges vessző a végén | [1, 2, 3] |
{"a": 1 "b": 2} | hiányzó vessző | {"a": 1, "b": 2} |
{"ok": True} | Python-literál | {"ok": true} |
{"x": 007} | kezdő nulla | {"x": 7} vagy {"x": "007"} |
// comment | megjegyzés | a JSON-ban nem megengedett |
A Javítsa ki helyettem gomb ezeket mind kijavítja, kivéve a hiányzó vesszőt és a kezdő nullát. A javítás szándékosan óvatos: soha nem találgatja, hová kell a hiányzó vessző, mert ha rossz helyre kerül, megváltozik az adatok jelentése, a 007 pedig jelentheti a 7-es számot és egy kódot is. Ilyen esetekben a pontos pozíciót kapja meg.
Nagy számok, kulcssorrend és más dolgok, amelyek általában elromlanak
Sok formázó úgy működik, hogy meghívja a JSON.parse, majd a JSON.stringify függvényt. Ez az oda-vissza alakítás csendben károsítja az adatokat. Egy Twitter- vagy Snowflake-azonosító, például az 1234567890123456789, meghaladja a JavaScript-számok 2^53-as határát, és 1234567890123456800 lesz belőle. Az 1.0 értékből 1 lesz, az 1e3 értékből 1000. Ez a formatter a számokat soha nem alakítja lebegőpontos értékké. Minden literált pontosan úgy másol át, ahogy le volt írva, így a kimenet a bemenet hű újraformázása, nem pedig az újraértelmezése. Ugyanez érvényes a stringeken belüli escape-szekvenciákra: a "\u00e9" alak "\u00e9" marad, és nem lesz belőle "é".
A kulcsok sorrendje is megmarad. A JSON-specifikáció szerint az objektum tagjai rendezetlenek, a konfigurációs fájlok, a tesztadatok és a kódáttekintések azonban sokkal jobban olvashatók, ha a sorrend stabil. Ha kanonikus formát szeretne, például két API-válasz összehasonlításához egy diff eszközben, kapcsolja be a Kulcsok rendezése opciót, és mindkét dokumentum minden beágyazási szinten ábécérendben sorolja fel a tulajdonságait.
JSON formázás vagy tömörítés: mikor melyiket használja
A szépen formázott JSON embereknek készül. Akkor használja, amikor egy API-választ néz át, package.json, tsconfig.json vagy OpenAPI dokumentumot ír, vagy amikor tesztadatokat tárol egy repositoryban, ahol a diffnek soronként egy változást kell mutatnia. A JavaScript világában a 2 szóköz a szokás, a Python- és .NET-projektekben a 4 szóköz gyakori, tabulátornál pedig minden olvasó maga választja meg a szélességet.
A tömörített JSON gépeknek készül. A szóközök és sortörések jellemzően a formázott dokumentum 20 és 40 százaléka közötti részét teszik ki, így eltávolításukkal kisebbek lesznek a böngészőknek küldött válaszok, a Redisben vagy adatbázisoszlopban tárolt értékek és a HTML-be ágyazott data-* attribútumok. A gzip a különbség egy részét behozza, de a minifikált változat gzippel is kisebbre tömörödik. Az eredmény alatti méretkijelzés pontosan megmutatja a különbséget az Ön dokumentumánál.
JSON kezelése a terminálban és a szerkesztőkben
A rendszeresen feldolgozott fájlokhoz egy parancssori eszköz gyorsabb bármelyik weboldalnál. A jq . file.json formáz, a jq -c . file.json tömörít, a python -m json.tool file.json pedig mindenhol működik, ahol telepítve van a Python. A Visual Studio Code a Shift+Alt+F billentyűkombinációval formázza a JSON-t, és séma szerint validálja, ha hozzáad egy $schema tulajdonságot. Ez az oldal a többi esetre való: a fejlesztői eszközök Network lapjáról kimásolt válaszra, egy naplósorra, egy wikiből származó konfigurációs részletre, vagy egy gyors ellenőrzésre olyan gépen, ahová semmit sem telepíthet.
Kapcsolódó eszközök az oldalon: a Base64 kódoló és dekódoló dekódolja a JWT payload részét, amely Base64url kódolású JSON. A Unix időbélyeg átalakító olvasható dátummá alakítja a legtöbb API-válaszban található createdAt számokat, az UUID dekóder pedig megmutatja az adataiban szereplő azonosítók verzióját és időbélyegét. További segédeszközöket a Fejlesztők kategóriában talál.
Gyakran ismételt kérdések
Feltöltődik a JSON-om egy szerverre?
Nem. Az elemzés, a formázás és a javítás teljes egészében az Ön böngészőjében, JavaScriptben fut. Miután az oldal betöltődött, kikapcsolhatja a hálózatot, és az eszköz tovább működik. Semmit sem naplózunk és nem tárolunk.Miért utasítja el a validátor a megjegyzéseket, ha a szerkesztőm elfogadja őket?
A megjegyzéseket a JSON szerzője, Douglas Crockford szándékosan hagyta ki a formátumból, hogy ne lehessen parser-utasításokra használni őket. Az olyan fájlok, mint atsconfig.json vagy a .vscode/settings.json, technikailag JSONC formátumúak, ami a JSON szerkesztők által támogatott bővítése. Az API-k, az adatbázisok és a legtöbb programozási nyelv szigorú parserei elutasítják őket. A javítás gomb eltávolítja a megjegyzéseket, így az eredmény mindenhol érvényes.
Formázhatok JSON Lines fájlt vagy több objektumot egyszerre?
Egy JSON-dokumentum pontosan egy értéket tartalmaz. Ha több, vesszővel vagy sortöréssel elválasztott objektumot illeszt be, a validátor az első fölösleges értéknél megáll. Tegye őket szögletes zárójelek közé, így tömb lesz belőlük, és azt már formázhatja. A javítás gomb ezt nem végzi el automatikusan, mert nem tudhatja, hogy a bemenetnek egyetlen dokumentumnak kellett-e lennie.Mekkora a maximális méret?
Nincs rögzített korlát. A néhány megabájtos dokumentumok egy laptopon jóval egy másodpercen belül elkészülnek. Nagyjából 400 kB felett a szintaxiskiemelés kikapcsol, hogy az oldal gyors maradjon, a másolás és a letöltés azonban továbbra is működik.Megváltoztatja az adatokat a kulcsok rendezése?
Nem. A JSON-ban az objektumok definíció szerint rendezetlenek, lásd a JSON szócikket a Wikipédián, így a parser a rendezett és az eredeti dokumentumot ugyanannak az értéknek olvassa. A tömbök sorrendje soha nem változik, mert az az adatok része.Hogyan escape-eljem a JSON-t, hogy egy stringbe ágyazhassam?
Először tömörítse, majd escape-elje az összes fordított perjelet és dupla idézőjelet. Sok nyelv ezt közvetlenül elvégzi: JavaScriptben aJSON.stringify(JSON.stringify(obj)), Pythonban a json.dumps(json.dumps(obj)) olyan JSON-stringet ad vissza, amely a JSON-szöveget tartalmazza.