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.

Gyors válasz

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 JSON nem ugyanaz, mint egy JavaScript objektum

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
A hibajel ott van, ahol a feldolgozás megállt, ami a valódi hiba után is lehet.

Hogyan találjon gyorsan JSON-hibát

Ezzel a sorrenddel dolgozzon. Ne a teljes fájl újraírásával kezdjen.

  1. Futtassa a JSON-t validátoron.
  2. Olvassa el az első jelentett hibát.
  3. Nézzen kicsit a jelentett pozíció elé.
  4. Ellenőrizze a vesszőket, különösen a záró és hiányzókat.
  5. Ellenőrizze az idézőjeleket: csak dupla.
  6. Illessze { } és [ ].
  7. Ellenőrizze a fordított perjeles escape-eket a sztringekben.
  8. 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őjelHasználjon dupla idézőjelet a nevekhez és sztringekhez.
Idézőjel nélküli kulcsCsavarja 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ójelZárjon be minden { } és [ ] párt.
Érvénytelen escapeHasználjon törvényes escape-et, vagy duplázza a fordított perjeleket az útvonalakon.
MegjegyzésTá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.