Tech Help

Česte JSON pogreške: završni zarez, navodnici i Unexpected token

Ispravite nevažeći JSON: završni zarez, jednostruki navodnici, ključevi bez navodnika i Unexpected token. Zašto JSON.parse ne uspijeva i kako provjeriti JSON.

Brzi odgovor

Većina JSON pogrešaka dolazi od strogih pravila: završni zarez, jednostruki navodnici, nazivi svojstava bez navodnika, nedostajući zarez, neupareni zagradi, neispravan escape ili komentari.

JSON izgleda kao JavaScript objekt, ali je stroži. Nazivi svojstava i nizovi trebaju dvostruke navodnike.

Ako vidite Unexpected token, prijavljeni znak može biti mjesto gdje se parsiranje zaustavilo—ne nužno gdje je izvorna pogreška počela.

Vaš JSON označen je kao nevažeći. Obično je sitna sintaksna pogreška, ne slomljeni format datoteke. Sedam pogrešaka u nastavku uzrokuje većinu Unexpected token.

Zašto se JSON tako lako pokvari?

JSON je format podataka sa strogom sintaksom. Literal JavaScript objekta može izgledati slično i ipak biti nevažeći JSON. U standardnom JSON nazivi svojstava i nizovi trebaju dvostruke navodnike, završni zarez nije dopušten, a komentari nisu dio formata.

1. Završni zarezi

Višak zareza nakon posljednjeg svojstva je problem. Standardni JSON to ne dopušta.

Nevažeće

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

Važeće

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

Isto pravilo vrijedi za polja. Uklonite zarez nakon posljednje stavke.

Nevažeće

[
  "red",
  "green",
]

Važeće

[
  "red",
  "green"
]

2. Jednostruki umjesto dvostrukih navodnika

JavaScript često prihvaća jednostruke navodnike. JSON ne. Nazivi svojstava i vrijednosti nizova moraju koristiti dvostruke navodnike.

Nevažeće

{
  'name': 'Alex'
}

Važeće

{
  "name": "Alex"
}

3. Nazivi svojstava bez navodnika

U JavaScriptu ponekad možete napisati name bez navodnika. U JSON svaki naziv svojstva mora biti niz s dvostrukim navodnicima.

Nevažeće

{
  name: "Alex",
  age: 30
}

Važeće

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

4. Nedostajući zarezi između vrijednosti

Svojstva i stavke polja trebaju zarez između. Parser može prijaviti Unexpected token na sljedećem navodniku ili zagradi, ne na samom nedostajućem zarezu.

Nevažeće

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

Važeće

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

5. Nedostajuće ili višak zagrada

Objekti koriste { }. Polja koriste [ ]. Ugniježđeni JSON često ne uspije kad fali ], ima višak } ili su zamijenjeni. Brojite parove otvaranja i zatvaranja.

Nevažeće

{
  "items": [1, 2
}

Važeće

{
  "items": [1, 2]
}

6. Neispravne escape sekvence

Unutar JSON niza, obrnuta kosa crta započinje escape. Sekvence poput ", \ i \n važeće su. Windows putanja C:\Users nije: \U nije zakonit JSON escape. Udvostručite obrnute crte, inače parser staje na tom znaku.

Nevažeće

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

Važeće

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

7. Komentari unutar JSON

Standardni JSON nema komentare. Neki alati za konfiguraciju prihvaćaju // ili /* */ (JSONC, JSON5 i slično). To nije standardni JSON, i JSON.parse će odbiti.

Nevažeće

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

Što znači Unexpected token?

Parser je sreo znak koji nije dopušten na toj poziciji. Prijavljeno mjesto je gdje je čitanje stalo. Ako ste ranije izostavili zarez, pogreška može pokazivati na navodnik sljedećeg svojstva. Formulacija ovisi o izvršnom okruženju; ne očekujte da svaki preglednik ispiše istu rečenicu.

Što znači Unexpected end of JSON input?

Tekst je završio prije nego što je vrijednost bila potpuna. Tipični uzroci: nedostaje } ili ], odrezan unos, prazno tijelo ili prekinut API odgovor. Nije jedna jedina pogreška.

Zašto JSON.parse() ne uspijeva?

JSON.parse() prima samo važeći JSON tekst. Ovo uspijeva:

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

Ovo ne uspijeva, jer jednostruki navodnici nisu JSON:

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

Točna poruka pogreške ovisi o JavaScript izvršnom okruženju. Tretirajte poruku kao nagovještaj, zatim provjerite zareze, navodnike i zagrade blizu te pozicije.

JSON nije isto što i JavaScript objekt

Literal JavaScript objekta može izgledati kao { name: 'Alex' }. Važeći JSON mora izgledati kao { "name": "Alex" }: nazivi i nizovi s dvostrukim navodnicima, bez završnog zareza, bez komentara.

  • JSON tekst
  • Parser čita tokene
  • Važeći podaci ili Unexpected token
Oznaka pogreške je gdje se parsiranje zaustavilo, što može biti nakon prave pogreške.

Kako brzo pronaći JSON pogrešku

Radite ovim redoslijedom. Nemojte počinjati prepisivanjem cijele datoteke.

  1. Provedite JSON kroz validator.
  2. Pročitajte prvu prijavljenu pogrešku.
  3. Pogledajte malo prije prijavljene pozicije.
  4. Provjerite zareze, osobito završne i nedostajuće.
  5. Provjerite navodnike: samo dvostruki.
  6. Uparite { } i [ ].
  7. Provjerite escape obrnute kose crte u nizovima.
  8. Uklonite komentare ako trebate strogi JSON.

Brza karta uobičajenih ispravaka:

Problem Ispravak
Završni zarezObrišite zarez nakon posljednje stavke.
Jednostruki navodniciKoristite dvostruke navodnike za nazive i nizove.
Ključ bez navodnikaObavijte naziv svojstva dvostrukim navodnicima.
Nedostajući zarezStavite zarez između svojstava ili stavki polja.
Nedostajuća zagradaZatvorite svaki par { } i [ ].
Neispravan escapeKoristite zakonit escape, ili udvostručite obrnute crte u putanjama.
KomentarUklonite // i /* */ za standardni JSON.

Provjerite i formatirajte JSON u pregledniku

NEXNARA Formatiranje i usporedba JSON-a može provjeriti JSON na ovom uređaju.

Možete validirati, urediti s 2 razmaka, 4 razmaka ili tabulatorom, minify, usporediti dva dokumenta (JSON Diff) i otvoriti .json datoteku. Parsiranje koristi JSON.parse u pregledniku, ne eval.

Dokumenti veći od 5 MB mogu djelovati sporo. Tekst veći od 15 MB ne obrađuje se u pregledniku, da stranica ostane odzivna.

Sama obrada JSON događa se u vašem pregledniku. Tekst se za ovaj alat ne šalje na NEXNARA poslužitelj. Oglasi i druge značajke stranice i dalje koriste mrežu; to je odvojeno od obrade.

Trebate provjeriti nevažeći JSON? Otvorite Formatiranje i usporedba JSON-a i zalijepite tekst.

FAQ

Zašto moj JSON kaže Unexpected token?

Parser je naišao na znak koji tamo nije dopušten. Prava pogreška—često nedostajući zarez ili jednostruki navodnik—može sjediti tik prije te pozicije.

Jesu li završni zarezi dopušteni u JSON?

Ne. Standardni JSON ne dopušta zarez nakon posljednjeg svojstva ili stavke polja. Literali JavaScript objekata često dopuštaju.

Može li JSON koristiti jednostruke navodnike?

Ne. Nazivi svojstava i nizovi moraju koristiti dvostruke navodnike.

Može li JSON sadržavati komentare?

Ne u standardnom JSON. Neki alati prihvaćaju JSONC ili JSON5 s komentarima; JSON.parse ih ipak odbija.

Zašto JSON.parse() ne uspijeva?

Niz nije važeći JSON. Tipični uzroci su završni zarez, jednostruki navodnici, ključevi bez navodnika, komentari ili odrezana vrijednost. Točna poruka ovisi o izvršnom okruženju.

Kako provjeriti je li JSON važeći?

Zalijepite ga u validator kao Formatiranje i usporedba JSON-a, ili pozovite JSON.parse u konzoli. Ako parsiranje baci iznimku, tekst nije važeći JSON.