Formatare și validare JSON
Lipiți JSON-ul ca să îl indentați, să îl minificați sau să îi sortați cheile. Dacă nu poate fi analizat, instrumentul arată linia și coloana unde s-a oprit parserul, cu un indicator sub problemă, așa că o virgulă lipsă într-un răspuns de 3.000 de linii se găsește în câteva secunde.
0 caractere · 0 cuvinte · 0 rânduri
0 caractere · 0 cuvinte · 0 rânduri
Funcționează integral în această filă a browserului. Textul dvs. nu este încărcat și nici stocat.
Tipuri de valori JSON
RFC 8259 permite exact aceste valori. Obiectele și tablourile se pot imbrica; restul sunt valori finale.
| Tip | Exemplu | Regulă |
|---|---|---|
| Obiect | {"id": 7, "tags": ["a"]} | Cheile trebuie să fie șiruri între ghilimele duble; membrii se separă prin virgule, fără virgulă la final. |
| Tablou | [1, "two", null] | Listă ordonată de valori oarecare, tipuri mixte permise. |
| Șir | "caf\u00e9 \"quoted\"" | Doar ghilimele duble; caracterele de control trebuie escapate; escapările \u folosesc patru cifre hex. |
| Număr | -12.5e3 | Doar zecimal: minus opțional, fără zerouri la început, fracție și exponent opționale. Fără NaN sau Infinity. |
| true, false și null | true | Cu litere mici, fără ghilimele. |
Ce respinge parserul
Fiecare intrare de mai jos a fost trecută prin același JSON.parse folosit de formatator la construirea acestei pagini.
| Intrare | Problemă | JSON.parse |
|---|---|---|
{"a": 1,} | Virgulă la final | Respins |
{'a': 1} | Șiruri între ghilimele simple | Respins |
{"a": 1 /* note */} | Comentarii | Respins |
{a: 1} | Cheie fără ghilimele | Respins |
{"n": NaN} | NaN nu este număr JSON | Respins |
{"n": 012} | Zero la început | Respins |
{"n": 0x1F} | Număr hexazecimal | Respins |
Escapări în șirurile JSON
| Caracter | Scris în JSON |
|---|---|
| Ghilimele duble | "\"" |
| Bară inversă | "\\" |
| Rând nou (line feed) | "\n" |
| Tabulator | "\t" |
| Carriage return | "\r" |
| Caracter de control U+0001 | "\u0001" |
| Bară oblică (escapare opțională) | "/" |
| Literă non-ASCII (fără escapare) | "é" |
Regulile unui document JSON valid
JSON este definit de RFC 8259 (identic în esență cu ECMA-404). Un document este o singură valoare: un obiect, o matrice, un șir, un număr, true, false sau null. Cheile obiectelor sunt întotdeauna șiruri între ghilimele duble. Șirurile folosesc doar ghilimele duble și trebuie să conțină secvențe de escape pentru ghilimele, backslash și orice caracter de control sub U+0020; tabulatorii și sfârșiturile de rând dintr-un șir se scriu deci \t și \n. RFC 8259 cere, de asemenea, UTF-8 pentru JSON-ul schimbat între sisteme.
Numerele sunt zecimale: fără zerouri la început, fără hexazecimal, fără NaN sau Infinity și fără semnul plus în față. Formatul nu are comentarii și nici virgule finale. Ultimele două reguli provoacă cele mai multe erori reale, pentru că obiectele literale din JavaScript, JSON5 și multe fișiere de configurare le permit pe amândouă. Tabelul de referință de mai jos a fost obținut trecând fiecare greșeală frecventă prin același parser pe care îl folosește formatatorul.
Indentare, minificare, sortare
Formatarea lizibilă adaugă sfârșituri de rând și indentare ca să se vadă structura; două spații sunt stilul cel mai des întâlnit în proiectele JavaScript, patru spații sunt alegerea obișnuită cu json.dumps(indent=4) din Python, iar tabulatorii lasă fiecare cititor să aleagă lățimea. Minificarea elimină orice spațiu inutil, ceea ce micșorează datele transmise prin API și permite ca un document să încapă pe un singur rând, pentru jurnale sau variabile de mediu.
Sortarea cheilor ordonează alfabetic membrii fiecărui obiect, recursiv. Obiectele JSON sunt neordonate prin definiție, deci sortarea nu schimbă sensul, dar face mult mai ușoară compararea a două documente venite din sisteme diferite. Rețineți că la parsare numerele devin valori double din JavaScript: întregii peste 2^53 (9.007.199.254.740.992), cum sunt unele ID-uri din baze de date, își pierd precizia la reformatare, așa că păstrați-i ca șiruri.
Din JSON în alte formate
Un document formatat se citește mai ușor, dar uneori îl aveți nevoie în altă formă. O matrice de obiecte devine un tabel cu JSON în CSV, iar convertorul de date mută fișiere întregi între JSON, XML, YAML și CSV.
Întrebări frecvente
- De ce respinge instrumentul JSON-ul meu cu comentarii?
- JSON standard nu are sintaxă pentru comentarii; RFC 8259 le omite intenționat. Ștergeți comentariile sau păstrați fișierul ca JSONC ori JSON5, dacă instrumentul care îl citește acceptă aceste formate.
- Ce înseamnă „Unexpected token” într-o eroare JSON?
- Parserul a întâlnit un caracter care nu poate apărea în acel loc, cum ar fi un apostrof, o virgulă finală înainte de } sau o cheie fără ghilimele. Linia și coloana afișate indică acel caracter.
- Sortarea cheilor îmi modifică datele?
- Nu. Ordinea membrilor unui obiect nu are nicio semnificație în JSON, deci documentul sortat este echivalent. Ordinea elementelor dintr-o matrice contează și nu este schimbată niciodată.
- De ce s-a schimbat un număr lung după formatare?
- JavaScript stochează numerele ca valori în virgulă mobilă pe 64 de biți, care reprezintă exact întregii doar până la 2^53. ID-urile mai mari sunt rotunjite la parsare; transmiteți-le ca șiruri pentru a păstra toate cifrele.
- Pot formata un fișier JSON în loc să lipesc textul?
- Deschideți fișierul în orice editor de text, selectați tot și lipiți aici. Fișierele foarte mari, de zeci de megabytes, pot încetini fila cât timp caseta de text le afișează.