Tech Help
Česte JSON greš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 pada i kako proveriti JSON.
Većina JSON grešaka dolazi od strogih pravila: završni zarez, jednostruki navodnici, imena svojstava bez navodnika, nedostajući zarez, neupareni zagradi, neispravan escape ili komentari.
JSON liči na JavaScript objekat, ali je stroži. Imena svojstava i niske zahtevaju dvostruke navodnike.
Ako vidite Unexpected token, prijavljeni znak može biti mesto gde se parsiranje zaustavilo—ne nužno gde je prvobitna greška počela.
Vaš JSON je označen kao nevažeći. Obično je sitna sintaksna greška, ne pokvaren format datoteke. Sedam grešaka ispod izaziva većinu Unexpected token.
Zašto se JSON tako lako kvari?
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 imena svojstava i niske treba dvostruke navodnike, završni zarez nije dozvoljen, a komentari nisu deo formata.
1. Završni zarezi
Višak zareza posle poslednjeg svojstva je problem. Standardni JSON to ne dozvoljava.
Nevažeće
{
"name": "Alex",
"age": 30,
}
Važeće
{
"name": "Alex",
"age": 30
}
Isto pravilo važi za nizove. Uklonite zarez posle poslednje stavke.
Nevažeće
[
"red",
"green",
]
Važeće
[
"red",
"green"
]
2. Jednostruki umesto dvostrukih navodnika
JavaScript često prihvata jednostruke navodnike. JSON ne. Imena svojstava i vrednosti niski moraju koristiti dvostruke navodnike.
Nevažeće
{
'name': 'Alex'
}
Važeće
{
"name": "Alex"
}
3. Imena svojstava bez navodnika
U JavaScriptu ponekad možete napisati name bez navodnika. U JSON svako ime svojstva mora biti niska sa dvostrukim navodnicima.
Nevažeće
{
name: "Alex",
age: 30
}
Važeće
{
"name": "Alex",
"age": 30
}
4. Nedostajući zarezi između vrednosti
Svojstva i stavke niza trebaju zarez između. Parser može prijaviti Unexpected token na sledeć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 { }. Nizovi koriste [ ]. Ugnežđeni JSON često padne kad fali ], ima višak } ili su zamenjeni. Brojite parove otvaranja i zatvaranja.
Nevažeće
{
"items": [1, 2
}
Važeće
{
"items": [1, 2]
}
6. Neispravne escape sekvence
Unutar JSON niske, obrnuta kosa crta počinje escape. Sekvence kao ", \ i \n su važeće. 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 podešavanje prihvataju // ili /* */ (JSONC, JSON5 i slično). To nije standardni JSON, i JSON.parse će odbiti.
Nevažeće
{
// user name
"name": "Alex"
}
Šta znači Unexpected token?
Parser je sreo znak koji nije dozvoljen na toj poziciji. Prijavljeno mesto je gde je čitanje stalo. Ako ste ranije izostavili zarez, greška može pokazivati na navodnik sledećeg svojstva. Formulacija zavisi od izvršnog okruženja; ne očekujte da svaki pregledač štampa istu rečenicu.
Šta znači Unexpected end of JSON input?
Tekst je završio pre nego što je vrednost bila kompletna. Tipični uzroci: nedostaje } ili ], odsečen ulaz, prazno telo ili prekinut API odgovor. Nije jedna jedina greška.
Zašto JSON.parse() pada?
JSON.parse() prima samo važeći JSON tekst. Ovo uspeva:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Ovo pada, jer jednostruki navodnici nisu JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
Tačna poruka greške zavisi od JavaScript izvršnog okruženja. Tretirajte poruku kao nagoveštaj, pa proverite zareze, navodnike i zagrade blizu te pozicije.
Literal JavaScript objekta može izgledati kao { name: 'Alex' }. Važeći JSON mora izgledati kao { "name": "Alex" }: imena i niske sa dvostrukim navodnicima, bez završnog zareza, bez komentara.
- JSON tekst
- Parser čita tokene
- Važeći podaci ili Unexpected token
Kako brzo naći JSON grešku
Radite ovim redom. Nemojte počinjati prepisivanjem cele datoteke.
- Proterajte JSON kroz validator.
- Pročitajte prvu prijavljenu grešku.
- Pogledajte malo pre prijavljene pozicije.
- Proverite zareze, posebno završne i nedostajuće.
- Proverite navodnike: samo dvostruki.
- Uparite { } i [ ].
- Proverite escape obrnute kose crte u niskama.
- Uklonite komentare ako treba strogi JSON.
Brza mapa uobičajenih ispravki:
| Problem | Ispravka |
|---|---|
| Završni zarez | Obrišite zarez posle poslednje stavke. |
| Jednostruki navodnici | Koristite dvostruke navodnike za imena i niske. |
| Ključ bez navodnika | Obavijte ime svojstva dvostrukim navodnicima. |
| Nedostajući zarez | Stavite zarez između svojstava ili stavki niza. |
| Nedostajuća zagrada | Zatvorite svaki par { } i [ ]. |
| Neispravan escape | Koristite zakonit escape, ili udvostručite obrnute crte u putanjama. |
| Komentar | Uklonite // i /* */ za standardni JSON. |
Proverite i formatirajte JSON u pregledaču
NEXNARA Форматирање и поређење JSON-а može proveriti JSON na ovom uređaju.
Možete validirati, urediti sa 2 razmaka, 4 razmaka ili tabulatorom, minify, uporediti dva dokumenta (JSON Diff) i otvoriti .json datoteku. Parsiranje koristi JSON.parse u pregledaču, ne eval.
Dokumenti veći od 5 MB mogu delovati sporo. Tekst veći od 15 MB se ne obrađuje u pregledaču, da stranica ostane odzivna.
Sama obrada JSON dešava se u vašem pregledaču. Tekst se za ovaj alat ne šalje na NEXNARA server. Reklame i druge funkcije sajta i dalje koriste mrežu; to je odvojeno od obrade.
Treba da proverite nevažeći JSON? Otvorite Форматирање и поређење JSON-а i nalepite tekst.
FAQ
Zašto moj JSON kaže Unexpected token?
Parser je naišao na znak koji tamo nije dozvoljen. Prava greška—često nedostajući zarez ili jednostruki navodnik—može sedeti tik pre te pozicije.
Da li su završni zarezi dozvoljeni u JSON?
Ne. Standardni JSON ne dozvoljava zarez posle poslednjeg svojstva ili stavke niza. Literali JavaScript objekata često dozvoljavaju.
Može li JSON koristiti jednostruke navodnike?
Ne. Imena svojstava i niske moraju koristiti dvostruke navodnike.
Može li JSON sadržati komentare?
Ne u standardnom JSON. Neki alati prihvataju JSONC ili JSON5 sa komentarima; JSON.parse ih i dalje odbija.
Zašto JSON.parse() padne?
Niska nije važeći JSON. Tipični uzroci su završni zarez, jednostruki navodnici, ključevi bez navodnika, komentari ili odsečena vrednost. Tačna poruka zavisi od izvršnog okruženja.
Kako da proverim da li je JSON važeći?
Nalepite ga u validator kao Форматирање и поређење JSON-а, ili pozovite JSON.parse u konzoli. Ako parsiranje baci izuzetak, tekst nije važeći JSON.