JSON formatter i validator
Zalijepite bilo koji JSON u okvir iznad i ovaj JSON formatter i validator provjerava ga dok tipkate. Valjan unos formatira se s uvlakom koju odaberete ili se minificira u jedan redak. Za nevažeći unos dobivate preciznu grešku s retkom i stupcem, istaknuti isječak i, kod uobičajenih pogrešaka, popravak jednim klikom. Sve se izvršava u vašem pregledniku, pa API odgovori, konfiguracijske datoteke i izvozi nikada ne napuštaju vaše računalo.
Što radi ovaj JSON formatter
- Formatiranje JSON-a (beautify) s 2 razmaka, 4 razmaka ili tabulatorima. Izlaz zadržava izvorni redoslijed ključeva, osim ako ne označite Sortiraj ključeve.
- Minificiranje JSON-a uklanjanjem svih razmaka i prijeloma redaka. Podatak o veličini ispod rezultata pokazuje koliko ste bajtova uštedjeli.
- Validacija JSON-a uživo prema RFC 8259, važećem JSON standardu. Statusni redak postaje zelen čim je dokument ispravan.
- Automatski popravak čestih grešaka: suvišni zarezi na kraju, jednostruki navodnici, ključevi bez navodnika, komentari,
True,NoneiNaNu stilu Pythona, brojevi poput.5ili+1. - Učitavanje datoteka gumbom Otvori datoteku ili ispuštanjem datoteke
.jsonna okvir za unos. Rezultat zatim možete preuzeti ili ga vratiti u unos za još jedan prolaz.
Zašto je u JSON validatoru poruka o grešci važnija od crvene boje
Većina online validatora kaže samo da nešto nije u redu. Preglednici nisu puno bolji: JSON.parse u Chromeu javlja Unexpected token } in JSON at position 148, Firefox kaže expected property name or '}', a nijedan vam ne govori koji redak trebate pogledati. Ovaj alat ima vlastiti parser koji pamti gdje počinje svaki token. Kad se zaustavi, dobivate redak i stupac, isječak tog retka s oznakom ^ ispod znaka koji uzrokuje problem i savjet jednostavnim jezikom, na primjer Vjerojatno nedostaje zarez između dvaju svojstava. Gumb Idi na grešku postavlja kursor točno na to mjesto u unosu.
Najčešće pogreške koje vidimo u zalijepljenim dokumentima:
| Unos | Problem | Ispravan JSON |
|---|---|---|
{'name': 'Ada'} | jednostruki navodnici | {"name": "Ada"} |
{name: "Ada"} | ključ bez navodnika | {"name": "Ada"} |
[1, 2, 3,] | suvišan zarez na kraju | [1, 2, 3] |
{"a": 1 "b": 2} | nedostaje zarez | {"a": 1, "b": 2} |
{"ok": True} | literal iz Pythona | {"ok": true} |
{"x": 007} | vodeća nula | {"x": 7} ili {"x": "007"} |
// comment | komentar | nije dopušten u JSON-u |
Gumb Popravi umjesto mene ispravlja sve navedeno osim zareza koji nedostaje i vodeće nule. Popravak je namjerno oprezan: nikada ne pogađa gdje pripada zarez koji nedostaje, jer bi zarez na krivom mjestu promijenio značenje podataka, a 007 može značiti broj 7 ili neku šifru. U tim slučajevima umjesto popravka dobivate točan položaj greške.
Veliki brojevi, redoslijed ključeva i ostalo što se obično pokvari
Mnogi formatteri rade tako da pozovu JSON.parse, a zatim JSON.stringify. Taj povratni put tiho oštećuje podatke. ID s Twittera ili iz Snowflakea poput 1234567890123456789 premašuje granicu od 2^53 za brojeve u JavaScriptu i vraća se kao 1234567890123456800. Vrijednost 1.0 postaje 1, a 1e3 postaje 1000. Ovaj formatter nikada ne pretvara brojeve u brojeve s pomičnim zarezom. Svaki literal kopira točno onako kako je zapisan, pa je izlaz vjerno preoblikovanje unosa, a ne njegovo novo tumačenje. Isto vrijedi za escape sekvence unutar stringova: "\u00e9" ostaje "\u00e9" i ne pretvara se u "é".
Redoslijed ključeva također se čuva. Specifikacija JSON-a kaže da članovi objekta nemaju redoslijed, ali konfiguracijske datoteke, testni podaci i pregledi koda puno su čitljiviji kad je redoslijed stalan. Ako vam treba kanonski oblik, na primjer za usporedbu dvaju API odgovora u alatu za diff, uključite Sortiraj ključeve i oba će dokumenta navesti svojstva abecednim redom na svakoj razini ugniježđenosti.
Formatiranje ili minificiranje JSON-a: kada koristiti što
Formatirani JSON namijenjen je ljudima. Koristite ga kad pregledavate API odgovor, pišete package.json, tsconfig.json ili OpenAPI dokument, ili kad u repozitoriju čuvate testne podatke čiji diff treba prikazivati jednu promjenu po retku. Dva razmaka konvencija su u svijetu JavaScripta, četiri razmaka česta su u Python i .NET projektima, a tabulatori svakom čitatelju omogućuju da sam odabere širinu.
Minificirani JSON namijenjen je strojevima. Razmaci i prijelomi redaka obično čine 20 do 40 posto formatiranog dokumenta, pa se njihovim uklanjanjem smanjuju podaci koji se šalju preglednicima, vrijednosti spremljene u Redis ili u stupac baze podataka te atributi data-* ugrađeni u HTML. Gzip dio te razlike nadoknađuje, ali minificirana verzija i nakon kompresije ostaje manja. Podatak o veličini ispod rezultata pokazuje točnu razliku za vaš dokument.
Rad s JSON-om u terminalu i uređivačima koda
Za datoteke koje obrađujete više puta alat naredbenog retka brži je od bilo koje web stranice. jq . file.json formatira, jq -c . file.json minificira, a python -m json.tool file.json radi svugdje gdje je instaliran Python. Visual Studio Code formatira JSON prečacem Shift+Alt+F i provjerava ga prema shemi kad dodate svojstvo $schema. Ova je stranica za ostale slučajeve: odgovor kopiran s kartice Network u pregledniku, redak iz loga, isječak konfiguracije s wikija ili brza provjera na računalu na koje ne možete ništa instalirati.
Srodni alati na ovom webu: Base64 koder i dekoder dekodira dio s podacima (payload) JWT tokena, a to je JSON kodiran u Base64url. Unix timestamp konverter pretvara brojeve createdAt iz većine API odgovora u čitljive datume, a UUID dekoder otkriva verziju i vremensku oznaku identifikatora u vašim podacima. Više alata pronaći ćete u kategoriji alati za programere.
Često postavljana pitanja
Šalje li se moj JSON na poslužitelj?
Ne. Parsiranje, formatiranje i popravak izvršavaju se u potpunosti u vašem pregledniku, u JavaScriptu. Kad se stranica učita, možete isključiti mrežu i alat će i dalje raditi. Ništa se ne bilježi niti sprema.Zašto validator odbija komentare kad ih moj uređivač prihvaća?
Komentare je iz JSON-a namjerno uklonio njegov autor Douglas Crockford, kako se format ne bi koristio za direktive parseru. Datoteke poputtsconfig.json ili .vscode/settings.json tehnički su JSONC, nadskup koji uređivači podržavaju. Strogi parseri u API-jima, bazama podataka i većini programskih jezika ih odbijaju. Gumb za popravak uklanja komentare pa je rezultat valjan svugdje.
Mogu li formatirati JSON Lines ili više objekata odjednom?
JSON dokument sadrži točno jednu vrijednost. Ako zalijepite više objekata odvojenih zarezima ili prijelomima redaka, validator se zaustavlja na prvoj suvišnoj vrijednosti. Omotajte ih uglatim zagradama da dobijete polje, a zatim formatirajte. Gumb za popravak to ne radi automatski jer ne može znati je li unos trebao biti jedan dokument.Koja je najveća dopuštena veličina?
Nema fiksnog ograničenja. Dokumenti od nekoliko megabajta na prijenosnom računalu formatiraju se za znatno manje od sekunde. Isticanje sintakse isključuje se iznad otprilike 400 kB kako bi stranica ostala responzivna, ali kopiranje i preuzimanje i dalje rade.Mijenja li sortiranje ključeva podatke?
Ne. Objekti u JSON-u po definiciji nemaju redoslijed (pogledajte članak o JSON-u na Wikipediji), pa parser sortirani i izvorni dokument čita kao istu vrijednost. Polja se nikada ne preslaguju jer je njihov redoslijed dio podataka.Kako escapeati JSON za umetanje u string?
Najprije ga minificirajte, a zatim ispred svake obrnute kose crte i svakog dvostrukog navodnika dodajte obrnutu kosu crtu. Mnogi jezici to nude izravno:JSON.stringify(JSON.stringify(obj)) u JavaScriptu ili json.dumps(json.dumps(obj)) u Pythonu daju JSON string koji sadrži JSON tekst.