JSON formatter și validator

Acrafto Team Dezvoltatori
Actualizat
Se așteaptă date de intrare. Lipiți JSON mai sus sau trageți aici un fișier .json.

Lipiți orice JSON în câmpul de mai sus, iar acest JSON formatter și validator îl verifică pe măsură ce scrieți. Datele valide sunt formatate lizibil cu indentarea aleasă sau minificate pe un singur rând. Pentru datele invalide primiți o eroare precisă cu rândul și coloana, un fragment evidențiat și, pentru greșelile obișnuite, o reparare dintr-un clic. Totul rulează în browserul dumneavoastră, așa că răspunsurile API, fișierele de configurare și exporturile nu părăsesc niciodată calculatorul.

Ce face acest JSON formatter

  • Formatare JSON (beautify) cu 2 spații, 4 spații sau tab-uri. Rezultatul păstrează ordinea originală a cheilor, cu excepția cazului în care bifați Sortează cheile.
  • Minificare JSON prin eliminarea tuturor spațiilor și salturilor de rând. Indicatorul de dimensiune de sub rezultat arată câți octeți ați economisit.
  • Validare JSON în timp real conform RFC 8259, standardul JSON actual. Linia de stare devine verde în momentul în care documentul este corect.
  • Repararea automată a erorilor frecvente: virgule în plus, ghilimele simple, chei fără ghilimele, comentarii, valori în stil Python True, None și NaN, numere ca .5 sau +1.
  • Încărcarea fișierelor cu butonul Deschide fișier sau trăgând un fișier .json peste câmpul de intrare. Apoi puteți descărca rezultatul sau îl puteți trimite înapoi în câmpul de intrare pentru o nouă trecere.

Validare JSON: de ce mesajul de eroare contează mai mult decât culoarea roșie

Majoritatea validatoarelor online spun doar că ceva este greșit. Nici browserele nu se descurcă mult mai bine: JSON.parse în Chrome raportează Unexpected token } in JSON at position 148, Firefox spune expected property name or '}', iar niciunul nu vă spune la ce rând să vă uitați. Acest instrument are propriul parser, care reține unde începe fiecare token. Când se oprește, primiți rândul și coloana, un fragment din acel rând cu un semn ^ sub caracterul problematic și o indicație pe înțelesul tuturor, de exemplu Probabil lipsește o virgulă între două proprietăți. Butonul Salt la eroare mută cursorul direct în acea poziție din câmpul de intrare.

Cele mai frecvente greșeli pe care le vedem în documentele lipite:

IntrareProblemăJSON corect
{'name': 'Ada'}ghilimele simple{"name": "Ada"}
{name: "Ada"}cheie fără ghilimele{"name": "Ada"}
[1, 2, 3,]virgulă în plus la final[1, 2, 3]
{"a": 1 "b": 2}virgulă lipsă{"a": 1, "b": 2}
{"ok": True}literal din Python{"ok": true}
{"x": 007}zero la început{"x": 7} sau {"x": "007"}
// commentcomentariunu este permis în JSON

Butonul Repară automat le corectează pe toate, cu excepția virgulei lipsă și a zeroului de la început. Repararea este intenționat prudentă: nu ghicește niciodată unde ar trebui pusă o virgulă lipsă, pentru că una inserată în locul greșit schimbă sensul datelor, iar 007 poate însemna numărul 7 sau un cod. În aceste cazuri primiți în schimb poziția exactă.

Numere mari, ordinea cheilor și alte lucruri care de obicei se strică

Multe instrumente de formatare funcționează apelând JSON.parse și apoi JSON.stringify. Acest drum dus-întors deteriorează datele fără niciun avertisment. Un ID de Twitter sau Snowflake precum 1234567890123456789 depășește limita de 2^53 a numerelor din JavaScript și revine ca 1234567890123456800. Valoarea 1.0 devine 1, iar 1e3 devine 1000. Acest formatter nu convertește niciodată numerele în virgulă mobilă. Copiază fiecare literal exact așa cum a fost scris, astfel încât rezultatul este o reformatare fidelă a datelor de intrare, nu o reinterpretare a lor. Același lucru este valabil pentru secvențele escape din șiruri: "\u00e9" rămâne "\u00e9" și nu este transformat în "é".

Și ordinea cheilor este păstrată. Specificația JSON spune că membrii unui obiect nu au o ordine anume, dar fișierele de configurare, datele de test și code review-urile se citesc mult mai ușor când ordinea este stabilă. Dacă preferați o formă canonică, de exemplu pentru a compara două răspunsuri API într-un instrument de diff, activați Sortează cheile și ambele documente își vor lista proprietățile în ordine alfabetică pe fiecare nivel de imbricare.

Formatare JSON sau minificare JSON: când folosiți fiecare variantă

JSON-ul formatat este pentru oameni. Folosiți-l când analizați un răspuns API, când scrieți un package.json, un tsconfig.json sau un document OpenAPI ori când păstrați date de test într-un repository unde diff-urile trebuie să arate o singură modificare pe rând. Două spații sunt convenția în lumea JavaScript, patru spații sunt obișnuite în proiectele Python și .NET, iar tab-urile îi permit fiecărui cititor să-și aleagă propria lățime.

JSON-ul minificat este pentru mașini. Spațiile albe reprezintă de obicei între 20 și 40 la sută dintr-un document formatat, așa că eliminarea lor micșorează datele trimise browserelor, valorile stocate în Redis sau într-o coloană de bază de date și atributele data-* încorporate în HTML. Gzip reduce o parte din această diferență, dar versiunea minificată se comprimă tot la un rezultat mai mic. Indicatorul de dimensiune de sub rezultat arată diferența exactă pentru documentul dumneavoastră.

Lucrul cu JSON în terminal și în editoare

Pentru fișierele pe care le procesați în mod repetat, un instrument în linia de comandă este mai rapid decât orice site. jq . file.json formatează lizibil, jq -c . file.json minifică, iar python -m json.tool file.json funcționează oriunde este instalat Python. Visual Studio Code formatează JSON cu Shift+Alt+F și îl validează după o schemă atunci când adăugați o proprietate $schema. Această pagină este pentru celelalte situații: un răspuns copiat din fila Network, un rând dintr-un log, un fragment de configurare dintr-un wiki sau o verificare rapidă pe un calculator pe care nu puteți instala nimic.

Instrumente înrudite de pe acest site: encoderul și decoderul Base64 decodifică partea de payload a unui JWT, care este JSON codificat în Base64url. Convertorul Unix timestamp transformă numerele createdAt din majoritatea răspunsurilor API în date ușor de citit, iar decodorul UUID vă arată versiunea și marcajul temporal al identificatorilor din datele dumneavoastră. Mai multe utilitare găsiți în categoria instrumente pentru dezvoltatori.

Întrebări frecvente

Este JSON-ul meu încărcat pe un server? Nu. Analiza, formatarea și repararea rulează în întregime în browserul dumneavoastră, în JavaScript. După ce pagina s-a încărcat, puteți opri conexiunea la rețea, iar instrumentul continuă să funcționeze. Nimic nu este înregistrat sau stocat.
De ce respinge validatorul comentariile, când editorul meu le acceptă? Comentariile au fost eliminate intenționat din JSON de autorul formatului, Douglas Crockford, pentru ca acesta să nu fie folosit pentru directive de parser. Fișiere precum tsconfig.json sau .vscode/settings.json sunt tehnic JSONC, o extensie a formatului pe care editoarele o acceptă. Parserele stricte din API-uri, baze de date și majoritatea limbajelor de programare le resping. Butonul de reparare elimină comentariile, astfel încât rezultatul este valid peste tot.
Pot formata JSON Lines sau mai multe obiecte deodată? Un document JSON conține exact o singură valoare. Dacă lipiți mai multe obiecte separate prin virgule sau salturi de rând, validatorul se oprește la prima valoare în plus. Puneți-le între paranteze pătrate pentru a forma un array, apoi formatați. Butonul de reparare nu face acest lucru automat, pentru că nu poate ști dacă datele de intrare trebuiau să fie un singur document.
Care este dimensiunea maximă? Nu există o limită fixă. Documentele de câțiva megaocteți se formatează pe un laptop în mult mai puțin de o secundă. Evidențierea sintaxei este dezactivată peste aproximativ 400 kB pentru ca pagina să rămână rapidă, dar copierea și descărcarea funcționează în continuare.
Sortarea cheilor modifică datele? Nu. Obiectele din JSON sunt prin definiție neordonate, vedeți articolul despre JSON de pe Wikipedia, așa că un parser citește documentul sortat și pe cel original ca fiind aceeași valoare. Array-urile nu sunt niciodată reordonate, deoarece ordinea lor face parte din date.
Cum fac escape la JSON pentru a-l include într-un șir? Mai întâi minificați, apoi puneți un backslash în fața fiecărui backslash și a fiecărei ghilimele duble. Multe limbaje oferă direct această operație: JSON.stringify(JSON.stringify(obj)) în JavaScript sau json.dumps(json.dumps(obj)) în Python produc un șir JSON care conține textul JSON.

Aș aprecia dacă ați putea împărtăși aceste pagini cu prietenii, le salvați la favorite sau le legați. Mulțumesc! 🙏