Tech Help
Algengar JSON-villur: kommu að lokum, gæsalappir og Unexpected token
Laga ógilt JSON: kommu að lokum, einfaldar gæsalappir, lykla án gæsalappa og Unexpected token. Af hverju JSON.parse mistekst og hvernig á að sannreyna JSON.
Flestar JSON-villur koma af ströngum reglum: kommu að lokum, einfaldar gæsalappir, eigindanöfn án gæsalappa, vantar kommu, ósamsvarandi sviga, ógilt escape eða athugasemdir.
JSON lítur út eins og JavaScript-hlutur en er strangara. Eigindanöfn og strengir þurfa tvöfaldar gæsalappir.
Ef þú sérð Unexpected token getur tilkynnti stafurinn verið staðurinn þar sem þáttun stöðvaðist—ekki endilega þar sem upprunalega villan hófst.
JSON-ið þitt er merkt ógilt. Venjulega er það lítið setningafræðivandamál, ekki bilað skráarsnið. Sjö villurnar hér að neðan valda flestum Unexpected token.
Af hverju brotnar JSON svona auðveldlega?
JSON er gagnasnið með stranga setningafræði. JavaScript-hlutabókstafur getur litið svipað út og samt verið ógilt JSON. Í staðlaðri JSON þurfa eigindanöfn og strengir tvöfaldar gæsalappir, kommu að lokum er ekki leyfð og athugasemdir eru ekki hluti af sniðinu.
1. Kommur að lokum
Auka komman eftir síðustu eigindinni er vandamálið. Staðlað JSON leyfir það ekki.
Ógilt
{
"name": "Alex",
"age": 30,
}
Gilt
{
"name": "Alex",
"age": 30
}
Sama regla gildir um fylki. Fjarlægðu kommuna eftir síðasta atriðið.
Ógilt
[
"red",
"green",
]
Gilt
[
"red",
"green"
]
2. Einfaldar gæsalappir í stað tvöfaldra
JavaScript samþykkir oft einfaldar gæsalappir. JSON gerir það ekki. Eigindanöfn og strenggildi verða að nota tvöfaldar gæsalappir.
Ógilt
{
'name': 'Alex'
}
Gilt
{
"name": "Alex"
}
3. Eigindanöfn án gæsalappa
Í JavaScript er stundum hægt að skrifa name án gæsalappa. Í JSON verður hvert eigindanafn að vera strengur með tvöföldum gæsalöppum.
Ógilt
{
name: "Alex",
age: 30
}
Gilt
{
"name": "Alex",
"age": 30
}
4. Kommur vantar milli gilda
Eigindir og fylkisatriði þurfa kommu á milli. Þáttarinn getur tilkynnt Unexpected token við næstu gæsalöpp eða sviga, ekki við kommuna sem vantar.
Ógilt
{
"name": "Alex"
"age": 30
}
Gilt
{
"name": "Alex",
"age": 30
}
5. Sviga vantar eða eru umfram
Hlutir nota { }. Fylki nota [ ]. Innbyggt JSON mistekst oft þegar ] vantar, } er umfram eða þau eru víxluð. Teljið opnunar- og lokunarpör.
Ógilt
{
"items": [1, 2
}
Gilt
{
"items": [1, 2]
}
6. Ógild escape-runur
Inni í JSON-streng byrjar bakstrik escape. Runur eins og ", \ og \n eru gildar. Windows-slóð skrifuð C:\Users er það ekki: \U er ekki löglegt JSON-escape. Tvöfaldið bakstrik, annars stoppar þáttarinn á þeim staf.
Ógilt
{"file":"C:\Users\Alex"}
Gilt
{"file":"C:\\Users\\Alex"}
7. Athugasemdir inni í JSON
Staðlað JSON hefur engar athugasemdir. Sum stillingartól samþykkja // eða /* */ (JSONC, JSON5 og svipuð). Það er ekki staðlað JSON og JSON.parse hafnar því.
Ógilt
{
// user name
"name": "Alex"
}
Hvað þýðir Unexpected token?
Þáttarinn hitti staf sem var ekki leyfður á þeirri stöðu. Tilkynnti staðurinn er þar sem lesturinn stöðvaðist. Ef þú slepptir kommu fyrr getur villan bent á gæsalöpp næstu eigindar. Orðalag fer eftir keyrsluumhverfi; búist ekki við að hver vafrari prenti sömu setningu.
Hvað þýðir Unexpected end of JSON input?
Textinn endaði áður en gildið var fullbúið. Dæmigerðar orsakir: vantar } eða ], afskorið inntak, tómur bolur eða slitið API-svar. Þetta er ekki ein villa.
Af hverju mistekst JSON.parse()?
JSON.parse() tekur aðeins gildan JSON-texta. Þetta tekst:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Þetta mistekst, því einfaldar gæsalappir eru ekki JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
Nákvæm villuskilaboð ráðast af JavaScript-keyrsluumhverfinu. Meðhöndlið skilaboðin sem vísbendingu, skoðið síðan kommur, gæsalappir og sviga nálægt þeirri stöðu.
JavaScript-hlutabókstafur getur litið út eins og { name: 'Alex' }. Gilt JSON verður að líta út eins og { "name": "Alex" }: nöfn og strengir með tvöföldum gæsalöppum, enga kommu að lokum, engar athugasemdir.
- JSON-texti
- Þáttarinn les tákn
- Gild gögn eða Unexpected token
Hvernig á að finna JSON-villu fljótt
Vinnið í þessari röð. Byrjið ekki á að endurskrifa alla skrána.
- Keyrið JSON í gegnum sannprófara.
- Lesið fyrstu tilkynntu villuna.
- Horfið aðeins fyrir tilkynnta stöðu.
- Athugið kommur, sérstaklega að lokum og sem vantar.
- Athugið gæsalappir: aðeins tvöfaldar.
- Parið { } og [ ].
- Athugið bakstrik-escape í strengjum.
- Fjarlægið athugasemdir ef þið þurfið strangt JSON.
Fljótlegt kort yfir venjulegar leiðréttingar:
| Vandamál | Leiðrétting |
|---|---|
| Komma að lokum | Eyðið kommunni eftir síðasta atriðið. |
| Einfaldar gæsalappir | Notið tvöfaldar gæsalappir fyrir nöfn og strengi. |
| Lykill án gæsalappa | Vefjið eigindanafnið í tvöfaldar gæsalappir. |
| Komma vantar | Setjið kommu milli eiginda eða fylkisatriða. |
| Svigi vantar | Lokið hverju { } og [ ] pari. |
| Ógilt escape | Notið löglegt escape, eða tvöfaldið bakstrik í slóðum. |
| Athugasemd | Fjarlægið // og /* */ fyrir staðlað JSON. |
Sannreynið og sniðið JSON í vafranum
NEXNARA Sniða og bera saman JSON getur athugað JSON á þessu tæki.
Þið getið sannreynt, fegrað með 2 bilum, 4 bilum eða dálklykli, minify, borið saman tvö skjöl (JSON Diff) og opnað .json-skrá. Þáttun notar JSON.parse í vafranum, ekki eval.
Skjöl stærri en 5 MB geta fundist hæg. Texti stærri en 15 MB er ekki unninn í vafranum svo síðan haldist svörunarhæf.
JSON-vinnslan sjálf gerist í vafranum ykkar. Textinn er ekki sendur á NEXNARA-þjón fyrir þetta tól. Auglýsingar og aðrir vefeiginleikar nota enn netið; það er aðskilið frá vinnslunni.
Þurfið þið að athuga ógilt JSON? Opnið Sniða og bera saman JSON og límdu textann inn.
FAQ
Af hverju segir JSON-ið mitt Unexpected token?
Þáttarinn hitti staf sem var ekki leyfður þar. Raunverulega villan—oft koma sem vantar eða einföld gæsalöpp—getur setið rétt fyrir þá stöðu.
Eru kommur að lokum leyfðar í JSON?
Nei. Staðlað JSON leyfir ekki kommu eftir síðustu eigind eða fylkisatriði. JavaScript-hlutabókstafir leyfa það oft.
Getur JSON notað einfaldar gæsalappir?
Nei. Eigindanöfn og strengir verða að nota tvöfaldar gæsalappir.
Getur JSON innihaldið athugasemdir?
Ekki í staðlaðri JSON. Sum tól samþykkja JSONC eða JSON5 með athugasemdum; JSON.parse hafnar þeim samt.
Af hverju mistekst JSON.parse()?
Strengurinn er ekki gilt JSON. Dæmigerðar orsakir eru komma að lokum, einfaldar gæsalappir, lyklar án gæsalappa, athugasemdir eða afskorið gildi. Nákvæm skilaboð ráðast af keyrsluumhverfinu.
Hvernig athuga ég hvort JSON sé gilt?
Límdu það í sannprófara eins og Sniða og bera saman JSON, eða kallaðu á JSON.parse í stjórnborði. Ef þáttun kastar er textinn ekki gilt JSON.