JSON formatter in validator

Acrafto Team Razvijalci
Posodobljeno
Čakanje na vnos. Zgoraj prilepite JSON ali spustite datoteko .json.

Prilepite poljuben JSON v zgornje polje in ta JSON formatter in validator ga preverja že med tipkanjem. Veljaven vnos se lepo oblikuje z zamikom po vaši izbiri ali pa se minificira v eno samo vrstico. Pri neveljavnem vnosu dobite natančno napako z vrstico in stolpcem, označen izsek in pri najpogostejših napakah popravek z enim klikom. Vse se izvaja v vašem brskalniku, zato odgovori API, konfiguracijske datoteke in izvozi nikoli ne zapustijo vašega računalnika.

Kaj zna ta JSON formatter in validator

  • Oblikovanje JSON (beautify) z 2 presledkoma, 4 presledki ali tabulatorji. Izpis ohrani izvirni vrstni red ključev, razen če označite Razvrsti ključe.
  • Minifikacija JSON z odstranitvijo vseh presledkov in prelomov vrstic. Podatek o velikosti pod rezultatom pokaže, koliko bajtov ste prihranili.
  • Validacija JSON v živo po RFC 8259, veljavnem standardu JSON. Statusna vrstica se obarva zeleno v trenutku, ko je dokument pravilen.
  • Samodejni popravek pogostih napak: odvečne vejice, enojni narekovaji, ključi brez narekovajev, komentarji, True, None in NaN v slogu Pythona ter števila, kot sta .5 ali +1.
  • Nalaganje datotek z gumbom Odpri datoteko ali tako, da datoteko .json spustite na vhodno polje. Rezultat nato prenesete ali ga pošljete nazaj v vhod za nov krog.

JSON validator: zakaj je sporočilo o napaki pomembnejše od rdeče barve

Večina spletnih validatorjev pove le, da je nekaj narobe. Brskalniki niso dosti boljši: JSON.parse v Chromu javi Unexpected token } in JSON at position 148, Firefox pa expected property name or '}', nobeden od njiju pa ne pove, katero vrstico morate pogledati. To orodje ima lasten razčlenjevalnik (parser), ki si zapomni, kje se začne vsak žeton. Ko se ustavi, dobite vrstico in stolpec, izsek te vrstice z oznako ^ pod spornim znakom in razlago v preprostem jeziku, na primer Verjetno manjka vejica med dvema lastnostma. Gumb Skoči na napako premakne kazalec naravnost na to mesto v vhodu.

Najpogostejše napake, ki jih vidimo v prilepljenih dokumentih:

VnosTežavaPravilen JSON
{'name': 'Ada'}enojni narekovaji{"name": "Ada"}
{name: "Ada"}ključ brez narekovajev{"name": "Ada"}
[1, 2, 3,]odvečna vejica[1, 2, 3]
{"a": 1 "b": 2}manjkajoča vejica{"a": 1, "b": 2}
{"ok": True}literal iz Pythona{"ok": true}
{"x": 007}vodilna ničla{"x": 7} ali {"x": "007"}
// commentkomentarv JSON ni dovoljen

Gumb Popravi namesto mene odpravi vse te napake razen manjkajoče vejice in vodilne ničle. Popravek je namenoma previden: nikoli ne ugiba, kam sodi manjkajoča vejica, ker bi vejica na napačnem mestu spremenila pomen podatkov, 007 pa je lahko mišljeno kot število 7 ali kot koda. V teh primerih namesto popravka dobite točen položaj napake.

Velika števila, vrstni red ključev in druge stvari, ki se običajno pokvarijo

Veliko orodij za oblikovanje JSON deluje tako, da pokliče JSON.parse in nato JSON.stringify. Ta krog podatke neopazno poškoduje. ID iz Twitterja ali Snowflake, na primer 1234567890123456789, presega mejo 2^53 za števila v JavaScriptu in se vrne kot 1234567890123456800. Vrednost 1.0 postane 1, 1e3 pa 1000. Ta formatter števil nikoli ne pretvarja v števila s plavajočo vejico. Vsak literal prepiše natanko tako, kot je bil zapisan, zato je izpis zvesto preoblikovanje vhoda in ne njegova nova interpretacija. Enako velja za ubežna zaporedja v nizih: "\u00e9" ostane "\u00e9" in se ne spremeni v "é".

Ohrani se tudi vrstni red ključev. Specifikacija JSON sicer pravi, da člani objekta nimajo določenega vrstnega reda, vendar so konfiguracijske datoteke, testni podatki in pregledi kode veliko bolj berljivi, če je vrstni red stalen. Če imate raje kanonično obliko, na primer za primerjavo dveh odgovorov API v orodju diff, vklopite Razvrsti ključe in oba dokumenta bosta lastnosti na vseh ravneh gnezdenja navajala po abecedi.

Oblikovanje ali minifikacija JSON: kdaj uporabiti kaj

Lepo oblikovan JSON je namenjen ljudem. Uporabite ga, ko pregledujete odgovor API, pišete package.json, tsconfig.json ali dokument OpenAPI ali ko shranjujete testne podatke v repozitorij, kjer naj diff pokaže eno spremembo na vrstico. Dva presledka sta dogovor v svetu JavaScripta, štirje presledki so pogosti v projektih Python in .NET, tabulatorji pa vsakemu bralcu omogočijo, da si izbere svojo širino.

Minificiran JSON je namenjen strojem. Presledki običajno predstavljajo 20 do 40 odstotkov oblikovanega dokumenta, zato njihova odstranitev zmanjša podatke, ki jih pošiljate brskalnikom, vrednosti, shranjene v Redis ali v stolpec podatkovne baze, in atribute data-*, vgrajene v HTML. Gzip del te razlike zapre, vendar se minificirana različica še vedno stisne v manjši rezultat. Podatek o velikosti pod rezultatom pokaže natančno razliko za vaš dokument.

Delo z JSON v terminalu in urejevalnikih

Za datoteke, ki jih obdelujete redno, je orodje v ukazni vrstici hitrejše od katerekoli spletne strani. jq . file.json lepo oblikuje, jq -c . file.json minificira, python -m json.tool file.json pa deluje povsod, kjer je nameščen Python. Visual Studio Code oblikuje JSON z bližnjico Shift+Alt+F in ga preveri glede na shemo, ko dodate lastnost $schema. Ta stran je za vse ostale primere: odgovor, kopiran iz zavihka Omrežje v orodjih za razvijalce, vrstica iz dnevnika, izsek konfiguracije z wikija ali hitro preverjanje na računalniku, kamor ne morete ničesar namestiti.

Sorodna orodja na tem spletnem mestu: Base64 kodirnik in dekodirnik dekodira podatkovni del (payload) žetona JWT, ki je JSON, kodiran v Base64url. Pretvornik Unix časovnega žiga številke createdAt, ki jih najdete v večini odgovorov API, pretvori v berljive datume, UUID dekoder pa pokaže različico in časovni žig identifikatorjev v vaših podatkih. Več pripomočkov najdete med orodji za razvijalce.

Pogosta vprašanja

Ali se moj JSON naloži na strežnik? Ne. Razčlenjevanje, oblikovanje in popravljanje potekajo v celoti v vašem brskalniku v JavaScriptu. Ko se stran naloži, lahko izklopite omrežje in orodje deluje naprej. Nič se ne beleži in nič se ne shranjuje.
Zakaj validator zavrne komentarje, čeprav jih moj urejevalnik sprejme? Komentarje je iz JSON namerno odstranil njegov avtor Douglas Crockford, da se format ne bi uporabljal za direktive razčlenjevalnika. Datoteke, kot sta tsconfig.json ali .vscode/settings.json, so tehnično JSONC, nadmnožica formata, ki jo podpirajo urejevalniki. Strogi razčlenjevalniki v API-jih, podatkovnih bazah in večini programskih jezikov komentarje zavrnejo. Gumb za popravek komentarje odstrani, zato je rezultat veljaven povsod.
Ali lahko oblikujem JSON Lines ali več objektov hkrati? Dokument JSON vsebuje natanko eno vrednost. Če prilepite več objektov, ločenih z vejicami ali prelomi vrstic, se validator ustavi pri prvi odvečni vrednosti. Zaprite jih v oglate oklepaje, da dobite polje, in ga nato oblikujte. Gumb za popravek tega ne naredi samodejno, ker ne more vedeti, ali je bil vnos mišljen kot en dokument.
Kakšna je največja velikost? Fiksne omejitve ni. Dokumenti z nekaj megabajti se na prenosniku oblikujejo v precej manj kot sekundi. Barvno označevanje sintakse se nad približno 400 kB izklopi, da stran ostane odzivna, kopiranje in prenos pa še vedno delujeta.
Ali razvrščanje ključev spremeni podatke? Ne. Objekti v JSON po definiciji nimajo vrstnega reda, glejte članek o JSON na Wikipediji, zato razčlenjevalnik razvrščeni in izvirni dokument prebere kot isto vrednost. Polja se nikoli ne preurejajo, ker je njihov vrstni red del podatkov.
Kako JSON pripravim za vstavljanje v niz? Najprej ga minificirajte, nato vsako levo poševnico in vsak dvojni narekovaj zapišite z ubežnim znakom. Številni jeziki to ponujajo neposredno: JSON.stringify(JSON.stringify(obj)) v JavaScriptu ali json.dumps(json.dumps(obj)) v Pythonu ustvari niz JSON, ki vsebuje besedilo JSON.

Cenil bi, če bi te strani delili s prijatelji, jih dodali med zaznamke ali nanje povezali. Hvala! 🙏