Tech Help
Gyakori JSON-hibák: záró vessző, idézőjelek és Unexpected token
Javítsa az érvénytelen JSON-t: záró vessző, szimpla idézőjel, idézőjel nélküli kulcsok és Unexpected token. Miért bukik el a JSON.parse, és hogyan ellenőrizhető a JSON.
A JSON-hibák nagy része szigorú szintaxisból jön: záró vessző, szimpla idézőjel, idézőjel nélküli tulajdonságnév, hiányzó vessző, nem illeszkedő zárójelek, érvénytelen escape vagy megjegyzések.
A JSON JavaScript objektumra hasonlít, de szigorúbb. A tulajdonságneveknek és sztringeknek dupla idézőjel kell.
Ha Unexpected token jelenik meg, a jelzett karakter lehet, ahol a feldolgozás megállt—nem feltétlenül az eredeti hiba kezdete.
A JSON érvénytelennek van jelölve. Általában kis szintaxishiba, nem törött fájlformátum. Az alábbi hét hiba okozza a legtöbb Unexpected tokent.
Miért törik el ilyen könnyen a JSON?
A JSON szigorú szintaxisú adatformátum. A JavaScript objektumliterál hasonlíthat, és mégis érvénytelen JSON lehet. A szabványos JSON-ban a tulajdonságneveknek és sztringeknek dupla idézőjel kell, a záró vessző tilos, a megjegyzés pedig nem része a formátumnak.
1. Záró vesszők
Az utolsó tulajdonság utáni extra vessző a gond. A szabványos JSON nem engedi.
Érvénytelen
{
"name": "Alex",
"age": 30,
}
Érvényes
{
"name": "Alex",
"age": 30
}
Ugyanez a szabály a tömbökre. Távolítsa el a vesszőt az utolsó elem után.
Érvénytelen
[
"red",
"green",
]
Érvényes
[
"red",
"green"
]
2. Szimpla idézőjel dupla helyett
A JavaScript gyakran elfogadja a szimpla idézőjelet. A JSON nem. A tulajdonságneveknek és sztringértékeknek dupla idézőjelet kell használniuk.
Érvénytelen
{
'name': 'Alex'
}
Érvényes
{
"name": "Alex"
}
3. Idézőjel nélküli tulajdonságnevek
JavaScriptben néha írható a name idézőjel nélkül. JSON-ban minden tulajdonságnévnek dupla idézőjeles sztringnek kell lennie.
Érvénytelen
{
name: "Alex",
age: 30
}
Érvényes
{
"name": "Alex",
"age": 30
}
4. Hiányzó vesszők értékek között
A tulajdonságok és tömb elemek közé vessző kell. Az elemző Unexpected tokent jelezhet a következő idézőjelen vagy kapcsos zárójelen, nem magán a hiányzó vesszőn.
Érvénytelen
{
"name": "Alex"
"age": 30
}
Érvényes
{
"name": "Alex",
"age": 30
}
5. Hiányzó vagy extra zárójelek
Az objektumok { }-t használnak. A tömbök [ ]-t. A beágyazott JSON gyakran elbukik, ha hiányzik a ], extra a }, vagy felcserélődnek. Számolja az nyitó és záró párokat.
Érvénytelen
{
"items": [1, 2
}
Érvényes
{
"items": [1, 2]
}
6. Érvénytelen escape-sorozatok
JSON-sztringben a fordított perjel escape-et indít. A ", \ és \n sorozatok érvényesek. A C:\Users Windows-útvonal nem: a \U nem törvényes JSON-escape. Duplázza a fordított perjeleket, különben az elemző azon a karakteren megáll.
Érvénytelen
{"file":"C:\Users\Alex"}
Érvényes
{"file":"C:\\Users\\Alex"}
7. Megjegyzések a JSON-ban
A szabványos JSON-nak nincs megjegyzése. Egyes konfigurációs eszközök elfogadják a // vagy /* */ jeleket (JSONC, JSON5 és hasonlók). Az nem szabványos JSON, és a JSON.parse elutasítja.
Érvénytelen
{
// user name
"name": "Alex"
}
Mit jelent az Unexpected token?
Az elemző olyan karaktert talált, amely azon a helyen nem volt engedélyezett. A jelzett pont az, ahol az olvasás megállt. Ha korábban kihagyott egy vesszőt, a hiba a következő tulajdonság idézőjelére mutathat. A megfogalmazás a futtatókörnyezettől függ; ne várja, hogy minden böngésző ugyanazt a mondatot írja ki.
Mit jelent az Unexpected end of JSON input?
A szöveg véget ért, mielőtt az érték kész lett volna. Tipikus okok: hiányzó } vagy ], csonka bemenet, üres törzs vagy megszakadt API-válasz. Nem egyetlen hiba.
Miért bukik el a JSON.parse()?
A JSON.parse() csak érvényes JSON-szöveget fogad el. Ez sikerül:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Ez elbukik, mert a szimpla idézőjel nem JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
A pontos hibaüzenet a JavaScript futtatókörnyezettől függ. Tekintse a üzenetet tippnek, majd ellenőrizze a vesszőket, idézőjeleket és zárójeleket a pozíció közelében.
A JavaScript objektumliterál így nézhet ki: { name: 'Alex' }. Az érvényes JSON így kell kinézzen: { "name": "Alex" }: dupla idézőjeles nevek és sztringek, nincs záró vessző, nincs megjegyzés.
- JSON-szöveg
- Az elemző tokeneket olvas
- Érvényes adat vagy Unexpected token
Hogyan találjon gyorsan JSON-hibát
Ezzel a sorrenddel dolgozzon. Ne a teljes fájl újraírásával kezdjen.
- Futtassa a JSON-t validátoron.
- Olvassa el az első jelentett hibát.
- Nézzen kicsit a jelentett pozíció elé.
- Ellenőrizze a vesszőket, különösen a záró és hiányzókat.
- Ellenőrizze az idézőjeleket: csak dupla.
- Illessze { } és [ ].
- Ellenőrizze a fordított perjeles escape-eket a sztringekben.
- Távolítsa el a megjegyzéseket, ha szigorú JSON kell.
Gyors térkép a szokásos javításokról:
| Probléma | Javítás |
|---|---|
| Záró vessző | Törölje a vesszőt az utolsó elem után. |
| Szimpla idézőjel | Használjon dupla idézőjelet a nevekhez és sztringekhez. |
| Idézőjel nélküli kulcs | Csavarja a tulajdonságnevet dupla idézőjelbe. |
| Hiányzó vessző | Tegyen vesszőt a tulajdonságok vagy tömbelemek közé. |
| Hiányzó zárójel | Zárjon be minden { } és [ ] párt. |
| Érvénytelen escape | Használjon törvényes escape-et, vagy duplázza a fordított perjeleket az útvonalakon. |
| Megjegyzés | Távolítsa el a // és /* */ jeleket a szabványos JSON-hoz. |
Ellenőrizze és formázza a JSON-t a böngészőben
A NEXNARA JSON formázás és összehasonlítás ezen az eszközön ellenőrizheti a JSON-t.
Validálhat, szépíthet 2 szóközzel, 4 szóközzel vagy tabulátorral, minify, összehasonlíthat két dokumentumot (JSON Diff), és megnyithat .json fájlt. A feldolgozás a böngésző JSON.parse-ját használja, nem az eval-t.
Az 5 MB-nál nagyobb dokumentumok lassúnak tűnhetnek. A 15 MB-nál nagyobb szöveget a böngésző nem dolgozza fel, hogy az oldal maradjon reszponzív.
Maga a JSON-feldolgozás a böngészőjében történik. A szöveget ez az eszköz nem küldi NEXNARA-kiszolgálóra. A hirdetések és más oldalfunkciók továbbra is hálózatot használnak; az elkülönül a feldolgozástól.
Érvénytelen JSON-t kell ellenőrizni? Nyissa meg a JSON formázás és összehasonlítás eszközt, és illessze be a szöveget.
FAQ
Miért mondja a JSON Unexpected tokent?
Az elemző olyan karaktert talált, amely ott nem volt engedélyezett. A valódi hiba—gyakran hiányzó vessző vagy szimpla idézőjel—éppen a pozíció előtt ülhet.
Engedélyezett a záró vessző JSON-ban?
Nem. A szabványos JSON nem enged vesszőt az utolsó tulajdonság vagy tömbelem után. A JavaScript objektumliterálok gyakran engedik.
Használhat a JSON szimpla idézőjelet?
Nem. A tulajdonságneveknek és sztringeknek dupla idézőjelet kell használniuk.
Tartalmazhat a JSON megjegyzést?
A szabványos JSON-ban nem. Egyes eszközök elfogadnak megjegyzéses JSONC-t vagy JSON5-öt; a JSON.parse akkor is elutasítja.
Miért bukik el a JSON.parse()?
A sztring nem érvényes JSON. Tipikus okok: záró vessző, szimpla idézőjel, idézőjel nélküli kulcsok, megjegyzések vagy csonka érték. A pontos üzenet a futtatókörnyezettől függ.
Hogyan ellenőrizzem, hogy a JSON érvényes-e?
Illessze be egy validátorba, például a JSON formázás és összehasonlítás eszközbe, vagy hívja a JSON.parse-t konzolban. Ha a feldolgozás kivételt dob, a szöveg nem érvényes JSON.