Tech Help

Erori JSON obișnuite: virgulă finală, ghilimele și Unexpected token

Corectați JSON invalid: virgulă finală, ghilimele simple, chei fără ghilimele și Unexpected token. De ce eșuează JSON.parse și cum validați JSON.

Răspuns rapid

Cele mai multe erori JSON vin din reguli stricte: virgulă finală, ghilimele simple, nume de proprietăți fără ghilimele, virgulă lipsă, paranteze nepotrivite, escape invalid sau comentarii.

JSON arată ca un obiect JavaScript, dar e mai strict. Numele de proprietăți și șirurile au nevoie de ghilimele duble.

Dacă vedeți Unexpected token, caracterul raportat poate fi locul unde s-a oprit analizarea—nu neapărat unde a început greșeala originală.

JSON-ul dvs. e marcat invalid. De obicei e o problemă mică de sintaxă, nu un format de fișier stricat. Cele șapte greșeli de mai jos cauzează cele mai multe Unexpected token.

De ce se strică JSON atât de ușor?

JSON e un format de date cu sintaxă strictă. Un literal de obiect JavaScript poate arăta similar și totuși fi JSON invalid. În JSON standard, numele de proprietăți și șirurile au nevoie de ghilimele duble, virgula finală nu e permisă, iar comentariile nu fac parte din format.

1. Virgule finale

Virgula în plus după ultima proprietate e problema. JSON standard nu o permite.

Invalid

{
  "name": "Alex",
  "age": 30,
}

Valid

{
  "name": "Alex",
  "age": 30
}

Aceeași regulă se aplică tablourilor. Ștergeți virgula după ultimul element.

Invalid

[
  "red",
  "green",
]

Valid

[
  "red",
  "green"
]

2. Ghilimele simple în loc de duble

JavaScript acceptă adesea ghilimele simple. JSON nu. Numele de proprietăți și valorile șir trebuie să folosească ghilimele duble.

Invalid

{
  'name': 'Alex'
}

Valid

{
  "name": "Alex"
}

3. Nume de proprietăți fără ghilimele

În JavaScript puteți uneori scrie name fără ghilimele. În JSON fiecare nume de proprietate trebuie să fie un șir cu ghilimele duble.

Invalid

{
  name: "Alex",
  age: 30
}

Valid

{
  "name": "Alex",
  "age": 30
}

4. Virgule lipsă între valori

Proprietățile și elementele de tablou au nevoie de virgulă între ele. Parserul poate raporta Unexpected token la următoarea ghilimea sau acoladă, nu la virgula lipsă.

Invalid

{
  "name": "Alex"
  "age": 30
}

Valid

{
  "name": "Alex",
  "age": 30
}

5. Paranteze lipsă sau în plus

Obiectele folosesc { }. Tablourile folosesc [ ]. JSON imbricat eșuează adesea când lipsește ], e în plus } sau sunt schimbate. Numărați perechile de deschidere și închidere.

Invalid

{
  "items": [1, 2
}

Valid

{
  "items": [1, 2]
}

6. Secvențe escape invalide

Într-un șir JSON, bara oblică inversă începe un escape. Secvențe ca ", \ și \n sunt valide. O cale Windows scrisă C:\Users nu este: \U nu e un escape JSON legal. Dublați barele oblice inverse, altfel parserul se oprește pe acel caracter.

Invalid

{"file":"C:\Users\Alex"}

Valid

{"file":"C:\\Users\\Alex"}

7. Comentarii în JSON

JSON standard nu are comentarii. Unele unelte de configurare acceptă // sau /* */ (JSONC, JSON5 și similare). Asta nu e JSON standard, iar JSON.parse îl respinge.

Invalid

{
  // user name
  "name": "Alex"
}

Ce înseamnă Unexpected token?

Parserul a întâlnit un caracter nepermis în acea poziție. Locul raportat e unde s-a oprit citirea. Dacă ați omis o virgulă mai devreme, eroarea poate indica ghilimelele proprietății următoare. Formularea variază după runtime; nu vă așteptați ca fiecare browser să tipărească aceeași propoziție.

Ce înseamnă Unexpected end of JSON input?

Textul s-a terminat înainte ca valoarea să fie completă. Cauze tipice: lipsește } sau ], intrare trunchiată, corp gol sau răspuns API întrerupt. Nu e un singur defect.

De ce eșuează JSON.parse()?

JSON.parse() acceptă doar text JSON valid. Acesta reușește:

const text = '{"name":"Alex"}';
const data = JSON.parse(text);

Acesta eșuează, pentru că ghilimelele simple nu sunt JSON:

const text = "{'name':'Alex'}";
JSON.parse(text);

Mesajul exact de eroare depinde de runtime-ul JavaScript. Tratați mesajul ca indiciu, apoi inspectați virgulele, ghilimelele și parantezele lângă acea poziție.

JSON nu e același lucru cu un obiect JavaScript

Un literal de obiect JavaScript poate arăta ca { name: 'Alex' }. JSON valid trebuie să arate ca { "name": "Alex" }: nume și șiruri cu ghilimele duble, fără virgulă finală, fără comentarii.

  • Text JSON
  • Parserul citește tokeni
  • Date valide sau Unexpected token
Marcajul de eroare e unde s-a oprit analizarea, ceea ce poate fi după greșeala reală.

Cum găsiți rapid o eroare JSON

Lucrați în această ordine. Nu începeți rescriind tot fișierul.

  1. Treceți JSON printr-un validator.
  2. Citiți prima eroare raportată.
  3. Priviți puțin înaintea poziției raportate.
  4. Verificați virgulele, mai ales cele finale și cele lipsă.
  5. Verificați ghilimelele: doar duble.
  6. Potriviți { } și [ ].
  7. Verificați escape-urile cu bară oblică inversă din șiruri.
  8. Eliminați comentariile dacă aveți nevoie de JSON strict.

Hartă rapidă a corectărilor obișnuite:

Problemă Corectare
Virgulă finalăȘtergeți virgula după ultimul element.
Ghilimele simpleFolosiți ghilimele duble pentru nume și șiruri.
Cheie fără ghilimeleÎnfășurați numele proprietății în ghilimele duble.
Virgulă lipsăPuneți o virgulă între proprietăți sau elemente de tablou.
Paranteză lipsăÎnchideți fiecare pereche { } și [ ].
Escape invalidFolosiți un escape legal, sau dublați barele oblice inverse în căi.
ComentariuEliminați // și /* */ pentru JSON standard.

Validați și formatați JSON în browser

NEXNARA Formatare și comparare JSON poate verifica JSON pe acest dispozitiv.

Puteți valida, înfrumuseța cu 2 spații, 4 spații sau tab, minify, compara două documente (JSON Diff) și deschide un fișier .json. Analizarea folosește JSON.parse în browser, nu eval.

Documentele mai mari de 5 MB pot părea lente. Textul mai mare de 15 MB nu e procesat în browser, ca pagina să rămână receptivă.

Procesarea JSON însăși se întâmplă în browserul dvs. Textul nu e trimis la un server NEXNARA pentru acest instrument. Reclamele și alte funcții ale site-ului încă folosesc rețeaua; asta e separat de procesare.

Trebuie să verificați JSON invalid? Deschideți Formatare și comparare JSON și lipiți textul.

FAQ

De ce JSON-ul meu spune Unexpected token?

Parserul a întâlnit un caracter nepermis acolo. Greșeala reală—adesea o virgulă lipsă sau ghilimele simple—poate sta chiar înaintea acelei poziții.

Sunt permise virgulele finale în JSON?

Nu. JSON standard nu permite o virgulă după ultima proprietate sau element de tablou. Literalele de obiect JavaScript o permit adesea.

Poate JSON folosi ghilimele simple?

Nu. Numele de proprietăți și șirurile trebuie să folosească ghilimele duble.

Poate JSON conține comentarii?

Nu în JSON standard. Unele unelte acceptă JSONC sau JSON5 cu comentarii; JSON.parse le respinge totuși.

De ce eșuează JSON.parse()?

Șirul nu e JSON valid. Cauze tipice sunt virgula finală, ghilimelele simple, cheile fără ghilimele, comentariile sau o valoare trunchiată. Mesajul exact depinde de runtime.

Cum verific dacă JSON e valid?

Lipiți-l într-un validator ca Formatare și comparare JSON, sau apelați JSON.parse într-o consolă. Dacă analizarea aruncă, textul nu e JSON valid.