Tech Help
Pogoste JSON napake: končna vejica, narekovaji in Unexpected token
Popravite neveljaven JSON: končna vejica, enojni narekovaji, ključi brez narekovajev in Unexpected token. Zakaj JSON.parse spodleti in kako preveriti JSON.
Večina JSON napak izhaja iz strogih pravil: končna vejica, enojni narekovaji, imena lastnosti brez narekovajev, manjkajoča vejica, neusklajeni oklepaji, neveljaven escape ali komentarji.
JSON je podoben objektu JavaScript, a strožji. Imena lastnosti in nizi potrebujejo dvojne narekovaje.
Če vidite Unexpected token, je prijavljeni znak morda mesto, kjer se je razčlenjevanje ustavilo—ne nujno začetek izvorne napake.
Vaš JSON je označen kot neveljaven. Običajno je drobna skladenjska težava, ne pokvarjen zapis datoteke. Sedem napak spodaj povzroči večino Unexpected token.
Zakaj se JSON tako zlahka pokvari?
JSON je podatkovni zapis s strogo skladnjo. Literal objekta JavaScript je lahko podoben in vseeno neveljaven JSON. V standardnem JSON imena lastnosti in nizi potrebujejo dvojne narekovaje, končna vejica ni dovoljena, komentarji pa niso del zapisa.
1. Končne vejice
Odvečna vejica za zadnjo lastnostjo je težava. Standardni JSON je ne dovoli.
Neveljavno
{
"name": "Alex",
"age": 30,
}
Veljavno
{
"name": "Alex",
"age": 30
}
Isto pravilo velja za polja. Odstranite vejico za zadnjim elementom.
Neveljavno
[
"red",
"green",
]
Veljavno
[
"red",
"green"
]
2. Enojni narekovaji namesto dvojnih
JavaScript pogosto sprejme enojne narekovaje. JSON ne. Imena lastnosti in nizi morajo uporabljati dvojne narekovaje.
Neveljavno
{
'name': 'Alex'
}
Veljavno
{
"name": "Alex"
}
3. Imena lastnosti brez narekovajev
V JavaScriptu lahko včasih napišete name brez narekovajev. V JSON mora biti vsako ime lastnosti niz z dvojnimi narekovaji.
Neveljavno
{
name: "Alex",
age: 30
}
Veljavno
{
"name": "Alex",
"age": 30
}
4. Manjkajoče vejice med vrednostmi
Lastnosti in elementi polja potrebujejo vejico med seboj. Razčlenjevalnik lahko prijavi Unexpected token pri naslednjem narekovaju ali oklepaju, ne pri manjkajoči vejici.
Neveljavno
{
"name": "Alex"
"age": 30
}
Veljavno
{
"name": "Alex",
"age": 30
}
5. Manjkajoči ali odvečni oklepaji
Objekti uporabljajo { }. Polja uporabljajo [ ]. Gnezdeni JSON pogosto spodleti, ko manjka ], je odveč } ali sta zamenjana. Preštejte pare odpiranja in zapiranja.
Neveljavno
{
"items": [1, 2
}
Veljavno
{
"items": [1, 2]
}
6. Neveljavna zaporedja escape
Znotraj JSON niza poševnica nazaj začne escape. Zaporedja kot ", \ in \n so veljavna. Windows pot C:\Users ni: \U ni zakonit JSON escape. Podvojite poševnice nazaj, sicer se razčlenjevalnik ustavi pri tem znaku.
Neveljavno
{"file":"C:\Users\Alex"}
Veljavno
{"file":"C:\\Users\\Alex"}
7. Komentarji v JSON
Standardni JSON nima komentarjev. Nekatera orodja za nastavitve sprejmejo // ali /* */ (JSONC, JSON5 in podobno). To ni standardni JSON in JSON.parse to zavrne.
Neveljavno
{
// user name
"name": "Alex"
}
Kaj pomeni Unexpected token?
Razčlenjevalnik je srečal znak, ki na tem mestu ni dovoljen. Prijavljeno mesto je, kjer se je branje ustavilo. Če ste prej izpustili vejico, lahko napaka kaže na narekovaj naslednje lastnosti. Besedilo se razlikuje po izvajalnem okolju; ne pričakujte, da vsak brskalnik izpiše isti stavek.
Kaj pomeni Unexpected end of JSON input?
Besedilo se je končalo, preden je bila vrednost dokončana. Tipični vzroki: manjka } ali ], odrezan vnos, prazno telo ali prekinjen API odgovor. Ni ena sama napaka.
Zakaj JSON.parse() spodleti?
JSON.parse() sprejme le veljavno JSON besedilo. To uspe:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
To spodleti, ker enojni narekovaji niso JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
Točno sporočilo napake je odvisno od izvajalnega okolja JavaScript. Obravnavajte sporočilo kot namig, nato preverite vejice, narekovaje in oklepaje blizu tega mesta.
Literal objekta JavaScript lahko izgleda kot { name: 'Alex' }. Veljaven JSON mora izgledati kot { "name": "Alex" }: imena in nizi z dvojnimi narekovaji, brez končne vejice, brez komentarjev.
- JSON besedilo
- Razčlenjevalnik bere žetone
- Veljavni podatki ali Unexpected token
Kako hitro najti JSON napako
Delajte v tem vrstnem redu. Ne začnite s prepisovanjem celotne datoteke.
- Poženite JSON skozi validator.
- Preberite prvo prijavljeno napako.
- Poglejte malo pred prijavljenim mestom.
- Preverite vejice, zlasti končne in manjkajoče.
- Preverite narekovaje: samo dvojne.
- Uskladite { } in [ ].
- Preverite escape poševnice nazaj v nizi.
- Odstranite komentarje, če potrebujete strog JSON.
Hiter zemljevid običajnih popravkov:
| Težava | Popravek |
|---|---|
| Končna vejica | Izbrišite vejico za zadnjim elementom. |
| Enojni narekovaji | Uporabite dvojne narekovaje za imena in nize. |
| Ključ brez narekovajev | Ovijte ime lastnosti z dvojnimi narekovaji. |
| Manjkajoča vejica | Postavite vejico med lastnosti ali elemente polja. |
| Manjkajoči oklepaj | Zaprite vsak par { } in [ ]. |
| Neveljaven escape | Uporabite zakonit escape ali podvojite poševnice nazaj v poteh. |
| Komentar | Odstranite // in /* */ za standardni JSON. |
Preverite in oblikujte JSON v brskalniku
NEXNARA Oblikovanje in primerjava JSON-a lahko preveri JSON na tej napravi.
Lahko potrdite, olepšate z 2 presledkoma, 4 presledki ali tabulatorjem, minify, primerjate dva dokumenta (JSON Diff) in odprete datoteko .json. Razčlenjevanje uporablja JSON.parse v brskalniku, ne eval.
Dokumenti večji od 5 MB se lahko zdijo počasni. Besedilo večje od 15 MB se v brskalniku ne obdela, da stran ostane odzivna.
Sama obdelava JSON poteka v vašem brskalniku. Besedilo se za to orodje ne pošlje na strežnik NEXNARA. Oglasi in druge funkcije spletnega mesta še vedno uporabljajo omrežje; to je ločeno od obdelave.
Morate preveriti neveljaven JSON? Odprite Oblikovanje in primerjava JSON-a in prilepite besedilo.
FAQ
Zakaj moj JSON pravi Unexpected token?
Razčlenjevalnik je naletel na znak, ki tam ni dovoljen. Prava napaka—pogosto manjkajoča vejica ali enojni narekovaj—lahko sedi tik pred tem mestom.
Ali so končne vejice v JSON dovoljene?
Ne. Standardni JSON ne dovoli vejice za zadnjo lastnostjo ali elementom polja. Literali objektov JavaScript to pogosto dovolijo.
Ali lahko JSON uporablja enojne narekovaje?
Ne. Imena lastnosti in nizi morajo uporabljati dvojne narekovaje.
Ali lahko JSON vsebuje komentarje?
Ne v standardnem JSON. Nekatera orodja sprejmejo JSONC ali JSON5 s komentarji; JSON.parse jih vseeno zavrne.
Zakaj JSON.parse() spodleti?
Niz ni veljaven JSON. Tipični vzroki so končna vejica, enojni narekovaji, ključi brez narekovajev, komentarji ali odrezana vrednost. Točno sporočilo je odvisno od izvajalnega okolja.
Kako preverim, ali je JSON veljaven?
Prilepite ga v validator, kot je Oblikovanje in primerjava JSON-a, ali pokličite JSON.parse v konzoli. Če razčlenjevanje vrže izjemo, besedilo ni veljaven JSON.