Tech Help
Bežné chyby JSON: koncová čiarka, úvodzovky a Unexpected token
Opravte neplatný JSON: koncová čiarka, jednoduché úvodzovky, kľúče bez úvodzoviek a Unexpected token. Prečo JSON.parse zlyháva a ako JSON overiť.
Väčšina chýb JSON pochádza z prísnych syntaktických pravidiel: koncová čiarka, jednoduché úvodzovky, názvy vlastností bez úvodzoviek, chýbajúca čiarka, nezhodné zátvorky, neplatný escape alebo komentáre.
JSON vyzerá ako objekt JavaScript, ale je prísnejší. Názvy vlastností a reťazce potrebujú dvojité úvodzovky.
Keď vidíte Unexpected token, nahlásený znak môže byť miesto, kde sa parsovanie zastavilo—nie nutne začiatok pôvodnej chyby.
Váš JSON je označený ako neplatný. Zvyčajne ide o drobný syntaktický problém, nie o rozbitý formát súboru. Sedem chýb nižšie spôsobuje väčšinu Unexpected token.
Prečo sa JSON tak ľahko rozbije?
JSON je dátový formát s prísnou syntaxou. Literál objektu JavaScript môže vyzerať podobne a predsa byť neplatný JSON. V štandardnom JSON potrebujú názvy vlastností a reťazce dvojité úvodzovky, koncová čiarka nie je povolená a komentáre nie sú súčasťou formátu.
1. Koncové čiarky
Nadbytočná čiarka za poslednou vlastnosťou je problém. Štandardný JSON ju nepovoľuje.
Neplatný
{
"name": "Alex",
"age": 30,
}
Platný
{
"name": "Alex",
"age": 30
}
Rovnaké pravidlo platí pre polia. Odstráňte čiarku za poslednou položkou.
Neplatný
[
"red",
"green",
]
Platný
[
"red",
"green"
]
2. Jednoduché úvodzovky namiesto dvojitých
JavaScript často prijíma jednoduché úvodzovky. JSON nie. Názvy vlastností aj reťazcové hodnoty musia používať dvojité úvodzovky.
Neplatný
{
'name': 'Alex'
}
Platný
{
"name": "Alex"
}
3. Názvy vlastností bez úvodzoviek
V JavaScripte niekedy môžete napísať name bez úvodzoviek. V JSON musí byť každý názov vlastnosti reťazec v dvojitých úvodzovkách.
Neplatný
{
name: "Alex",
age: 30
}
Platný
{
"name": "Alex",
"age": 30
}
4. Chýbajúce čiarky medzi hodnotami
Medzi vlastnosťami a položkami poľa je potrebná čiarka. Parser môže nahlásiť Unexpected token pri ďalšej úvodzovke alebo zátvorke, nie pri chýbajúcej čiarke.
Neplatný
{
"name": "Alex"
"age": 30
}
Platný
{
"name": "Alex",
"age": 30
}
5. Chýbajúce alebo nadbytočné zátvorky
Objekty používajú { }. Polia používajú [ ]. Vnorený JSON často zlyhá, keď chýba ], prebytočná } alebo sa oboje vymení. Spočítajte otváracie a zatváracie páry.
Neplatný
{
"items": [1, 2
}
Platný
{
"items": [1, 2]
}
6. Neplatné escape sekvencie
Vo vnútri reťazca JSON začína spätné lomítko escape. Sekvencie ako ", \ a \n sú platné. Cesta Windows zapísaná C:\Users nie je: \U nie je legálny JSON escape. Zdvojnásobte spätné lomítka, inak sa parser zastaví na tom znaku.
Neplatný
{"file":"C:\Users\Alex"}
Platný
{"file":"C:\\Users\\Alex"}
7. Komentáre vnútri JSON
Štandardný JSON nemá komentáre. Niektoré konfiguračné nástroje prijímajú // alebo /* */ (JSONC, JSON5 a podobné). To nie je štandardný JSON a JSON.parse to odmietne.
Neplatný
{
// user name
"name": "Alex"
}
Čo znamená Unexpected token?
Parser narazil na znak, ktorý na tej pozícii nebol povolený. Nahlásené miesto je tam, kde sa čítanie zastavilo. Ak ste skôr vynechali čiarku, chyba môže ukazovať na úvodzovku ďalšej vlastnosti. Znenie sa líši podľa behového prostredia; neočakávajte, že každý prehliadač vytlačí tú istú vetu.
Čo znamená Unexpected end of JSON input?
Text sa skončil skôr, než bola hodnota dokončená. Typické príčiny: chýbajúca } alebo ], orezaný vstup, prázdne telo alebo prerušená odpoveď API. Nie je to jedna jediná chyba.
Prečo JSON.parse() zlyháva?
JSON.parse() prijíma iba platný JSON text. Toto uspeje:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Toto zlyhá, pretože jednoduché úvodzovky nie sú JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
Presná chybová správa závisí od behového prostredia JavaScript. Berte správu ako nápoveď a skontrolujte čiarky, úvodzovky a zátvorky blízko tej pozície.
Literál objektu JavaScript môže vyzerať ako { name: 'Alex' }. Platný JSON musí vyzerať ako { "name": "Alex" }: názvy a reťazce v dvojitých úvodzovkách, bez koncovej čiarky, bez komentárov.
- Text JSON
- Parser číta tokeny
- Platné dáta alebo Unexpected token
Ako rýchlo nájsť chybu JSON
Postupujte v tomto poradí. Nezačínajte prepisom celého súboru.
- Prežeňte JSON validátorom.
- Prečítajte prvú nahlásenú chybu.
- Pozrite sa kúsok pred nahlásenú pozíciu.
- Skontrolujte čiarky, najmä koncové a chýbajúce.
- Skontrolujte úvodzovky: len dvojité.
- Zladte { } a [ ].
- Skontrolujte escape spätným lomítkom v reťazcoch.
- Odstráňte komentáre, ak potrebujete prísny JSON.
Rýchla mapa obvyklých opráv:
| Problém | Oprava |
|---|---|
| Koncová čiarka | Vymažte čiarku za poslednou položkou. |
| Jednoduché úvodzovky | Použite dvojité úvodzovky pre názvy a reťazce. |
| Kľúč bez úvodzoviek | Obalte názov vlastnosti dvojitými úvodzovkami. |
| Chýbajúca čiarka | Vložte čiarku medzi vlastnosti alebo položky poľa. |
| Chýbajúca zátvorka | Uzavrite každý pár { } a [ ]. |
| Neplatný escape | Použite legálny escape, alebo zdvojnásobte spätné lomítka v cestách. |
| Komentár | Odstráňte // a /* */ pre štandardný JSON. |
Overte a formátujte JSON v prehliadači
NEXNARA Formátovanie a porovnanie JSON môže skontrolovať JSON na tomto zariadení.
Môžete overovať, pekne formátovať 2 medzerami, 4 medzerami alebo tabulátorom, minify, porovnať dva dokumenty (JSON Diff) a otvoriť súbor .json. Parsovanie používa JSON.parse v prehliadači, nie eval.
Dokumenty väčšie ako 5 MB môžu pôsobiť pomaly. Text väčší ako 15 MB sa v prehliadači nespracúva, aby stránka ostala svižná.
Samotné spracovanie JSON prebieha vo vašom prehliadači. Text sa pre tento nástroj neodosiela na server NEXNARA. Reklamy a ďalšie funkcie webu stále používajú sieť; to je oddelené od spracovania.
Potrebujete skontrolovať neplatný JSON? Otvorte Formátovanie a porovnanie JSON a vložte text.
FAQ
Prečo môj JSON hovorí Unexpected token?
Parser narazil na znak, ktorý tam nebol povolený. Skutočná chyba—často chýbajúca čiarka alebo jednoduchá úvodzovka—môže sedieť tesne pred tou pozíciou.
Sú koncové čiarky v JSON povolené?
Nie. Štandardný JSON nepovoľuje čiarku za poslednou vlastnosťou alebo položkou poľa. Literály objektov JavaScript to často povoľujú.
Môže JSON používať jednoduché úvodzovky?
Nie. Názvy vlastností a reťazce musia používať dvojité úvodzovky.
Môže JSON obsahovať komentáre?
Nie v štandardnom JSON. Niektoré nástroje prijímajú JSONC alebo JSON5 s komentármi; JSON.parse ich aj tak odmietne.
Prečo JSON.parse() zlyháva?
Reťazec nie je platný JSON. Typické príčiny sú koncová čiarka, jednoduché úvodzovky, kľúče bez úvodzoviek, komentáre alebo orezaná hodnota. Presná správa závisí od behového prostredia.
Ako overím, či je JSON platný?
Vložte ho do validátora ako Formátovanie a porovnanie JSON, alebo zavolajte JSON.parse v konzole. Ak parsovanie vyhodí výnimku, text nie je platný JSON.