Tech Help
Yleiset JSON-virheet: perässä oleva pilkku, lainausmerkit ja Unexpected token
Korjaa virheellinen JSON: perässä oleva pilkku, yksittäiset lainausmerkit, lainausmerkitön avain ja Unexpected token. Katso miksi JSON.parse epäonnistuu ja miten JSON validoidaan.
Useimmat JSON-virheet tulevat tiukasta syntaksista: perässä oleva pilkku, yksittäiset lainausmerkit, lainausmerkitön ominaisuusnimi, puuttuva pilkku, parittomat sulkeet, virheellinen escape tai kommentit.
JSON näyttää JavaScript-oliolta mutta on tiukempi. Ominaisuusnimet ja merkkijonot tarvitsevat kaksoislainausmerkit.
Jos näet Unexpected token, ilmoitettu merkki voi olla kohta, jossa jäsennys pysähtyi—ei välttämättä alkuperäisen virheen alku.
JSON merkitään virheelliseksi. Se on yleensä pieni syntaksiongelma, ei rikkoutunut tiedostomuoto. Alla olevat seitsemän virhettä aiheuttavat useimmat Unexpected token -tapaukset.
Miksi JSON hajoaa niin helposti?
JSON on tiukan syntaksin dataformaatti. JavaScript-olioliteraali voi näyttää samalta ja silti olla virheellistä JSON-dataa. Standard-JSON:ssa ominaisuusnimet ja merkkijonot tarvitsevat kaksoislainausmerkit, perässä oleva pilkku ei ole sallittu, eikä kommentit kuulu muotoon.
1. Perässä olevat pilkut
Viimeisen ominaisuuden jälkeinen ylimääräinen pilkku on ongelma. Standard-JSON ei salli sitä.
Virheellinen
{
"name": "Alex",
"age": 30,
}
Kelvollinen
{
"name": "Alex",
"age": 30
}
Sama sääntö koskee taulukoita. Poista pilkku viimeisen alkion jälkeen.
Virheellinen
[
"red",
"green",
]
Kelvollinen
[
"red",
"green"
]
2. Yksittäiset lainausmerkit kaksoisten sijaan
JavaScript hyväksyy usein yksittäiset lainausmerkit. JSON ei. Ominaisuusnimien ja merkkijonoarvojen on käytettävä kaksoislainausmerkkejä.
Virheellinen
{
'name': 'Alex'
}
Kelvollinen
{
"name": "Alex"
}
3. Lainausmerkitön ominaisuusnimi
JavaScriptissä voi joskus kirjoittaa name ilman lainausmerkkejä. JSON:ssa jokaisen ominaisuusnimen on oltava kaksoislainattu merkkijono.
Virheellinen
{
name: "Alex",
age: 30
}
Kelvollinen
{
"name": "Alex",
"age": 30
}
4. Puuttuvat pilkut arvojen välillä
Ominaisuuksien ja taulukon alkioiden väliin tarvitaan pilkku. Jäsennin voi ilmoittaa Unexpected token seuraavassa lainausmerkissä tai aaltosulkeessa, ei puuttuvassa pilkussa.
Virheellinen
{
"name": "Alex"
"age": 30
}
Kelvollinen
{
"name": "Alex",
"age": 30
}
5. Puuttuvat tai ylimääräiset sulkeet
Oliot käyttävät { }. Taulukot käyttävät [ ]. Sisäkkäinen JSON epäonnistuu usein, kun ] puuttuu, } on ylimääräinen tai ne on vaihdettu. Laske avaavat ja sulkevat parit.
Virheellinen
{
"items": [1, 2
}
Kelvollinen
{
"items": [1, 2]
}
6. Virheelliset escape-jonot
JSON-merkkijonossa kenoviiva aloittaa escapen. Jonot kuten ", \ ja \n ovat kelvollisia. Windows-polku muodossa C:\Users ei ole: \U ei ole laillinen JSON-escape. Kaksinkertaista kenoviivat, muuten jäsennin pysähtyy siihen merkkiin.
Virheellinen
{"file":"C:\Users\Alex"}
Kelvollinen
{"file":"C:\\Users\\Alex"}
7. Kommentit JSON:ssa
Standard-JSON:ssa ei ole kommentteja. Jotkin asetustyökalut hyväksyvät // tai /* */ (JSONC, JSON5 ja vastaavat). Se ei ole standard-JSON, ja JSON.parse hylkää sen.
Virheellinen
{
// user name
"name": "Alex"
}
Mitä Unexpected token tarkoittaa?
Jäsennin tapasi merkin, jota ei sallittu siinä kohdassa. Ilmoitettu paikka on se, jossa lukeminen pysähtyi. Jos jätit pilkun pois aiemmin, virhe voi osoittaa seuraavan ominaisuuden lainausmerkkiin. Sanamuoto vaihtelee ajonaikaisen ympäristön mukaan; älä odota, että jokainen selain tulostaa saman lauseen.
Mitä Unexpected end of JSON input tarkoittaa?
Teksti loppui ennen kuin arvo oli valmis. Tyypillisiä syitä ovat puuttuva } tai ], katkaistu syöte, tyhjä runko tai katkennut API-vastaus. Se ei ole yksi ainoa vika.
Miksi JSON.parse() epäonnistuu?
JSON.parse() hyväksyy vain kelvollisen JSON-tekstin. Tämä onnistuu:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Tämä epäonnistuu, koska yksittäiset lainausmerkit eivät ole JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
Tarkka virheilmoitus riippuu JavaScript-ajonaikaisesta ympäristöstä. Käsittele viestiä vihjeenä ja tarkista sitten pilkut, lainausmerkit ja sulkeet lähellä sitä kohtaa.
JavaScript-olioliteraali voi näyttää tältä: { name: 'Alex' }. Kelvollisen JSON:n on näytettävä tältä: { "name": "Alex" }: kaksoislainatut nimet ja merkkijonot, ei perässä olevaa pilkkua, ei kommentteja.
- JSON-teksti
- Jäsennin lukee tokeneita
- Kelvollista dataa tai Unexpected token
Näin löydät JSON-virheen nopeasti
Tee tässä järjestyksessä. Älä aloita kirjoittamalla koko tiedostoa uudelleen.
- Aja JSON validatorin läpi.
- Lue ensimmäinen ilmoitettu virhe.
- Katso hieman ennen ilmoitettua kohtaa.
- Tarkista pilkut, erityisesti perässä olevat ja puuttuvat.
- Tarkista lainausmerkit: vain kaksoiset.
- Sovita { } ja [ ].
- Tarkista kenoviiva-escapet merkkijonoissa.
- Poista kommentit, jos tarvitset tiukan JSON:n.
Nopea kartta tavallisista korjauksista:
| Ongelma | Korjaus |
|---|---|
| Perässä oleva pilkku | Poista pilkku viimeisen alkion jälkeen. |
| Yksittäiset lainausmerkit | Käytä kaksoislainausmerkkejä nimille ja merkkijonoille. |
| Lainausmerkitön avain | Kääri ominaisuusnimi kaksoislainausmerkkeihin. |
| Puuttuva pilkku | Laita pilkku ominaisuuksien tai taulukon alkioiden väliin. |
| Puuttuva sulje | Sulje jokainen { }- ja [ ]-pari. |
| Virheellinen escape | Käytä laillista escapea tai kaksinkertaista kenoviivat poluissa. |
| Kommentti | Poista // ja /* */ standard-JSON:ia varten. |
Validoi ja muotoile JSON selaimessa
NEXNARA JSON-muotoilu ja vertailu voi tarkistaa JSON:n tällä laitteella.
Voit validoida, kaunistaa 2 välilyönnillä, 4 välilyönnillä tai sarkaimella, minify, vertailla kahta asiakirjaa (JSON Diff) ja avata .json-tiedoston. Jäsennys käyttää selaimen JSON.parse-metodia, ei evalia.
Yli 5 MB asiakirjat voivat tuntua hitailta. Yli 15 MB tekstiä ei käsitellä selaimessa, jotta sivu pysyy reagoivana.
Itse JSON-käsittely tapahtuu selaimessasi. Tekstiä ei lähetetä NEXNARA-palvelimelle tätä työkalua varten. Mainokset ja muut sivuston ominaisuudet käyttävät yhä verkkoa; se on erillään käsittelystä.
Pitääkö tarkistaa virheellinen JSON? Avaa JSON-muotoilu ja vertailu ja liitä teksti.
FAQ
Miksi JSON sanoo Unexpected token?
Jäsennin kohtasi merkin, jota ei sallittu siinä kohdassa. Todellinen virhe—usein puuttuva pilkku tai yksittäinen lainausmerkki—voi olla juuri ennen sitä kohtaa.
Sallitaanko JSON:ssa perässä oleva pilkku?
Ei. Standard-JSON ei salli pilkkua viimeisen ominaisuuden tai taulukon alkion jälkeen. JavaScript-olioliteraalit sallivat sen usein.
Voiko JSON käyttää yksittäisiä lainausmerkkejä?
Ei. Ominaisuusnimien ja merkkijonojen on käytettävä kaksoislainausmerkkejä.
Voiko JSON sisältää kommentteja?
Ei standard-JSON:ssa. Jotkin työkalut hyväksyvät JSONC:n tai JSON5:n kommenteilla; JSON.parse hylkää ne silti.
Miksi JSON.parse() epäonnistuu?
Merkkijono ei ole kelvollista JSON:ia. Tyypillisiä syitä ovat perässä oleva pilkku, yksittäiset lainausmerkit, lainausmerkitön avain, kommentit tai katkaistu arvo. Tarkka viesti riippuu ajonaikaisesta ympäristöstä.
Miten tarkistan, onko JSON kelvollista?
Liitä se validatoriin kuten JSON-muotoilu ja vertailu, tai kutsu JSON.parse konsolissa. Jos jäsennys heittää, teksti ei ole kelvollista JSON:ia.