Tech Help

Algemene JSON-foute: sluitkomma, aanhalingstekens en Unexpected token

Maak ongeldige JSON reg: sluitkomma, enkelaanhalingstekens, onaanhalde sleutels en Unexpected token. Hoekom JSON.parse faal en hoe om JSON te toets.

Vinnige antwoord

Die meeste JSON-foute kom van streng reëls: sluitkomma, enkelaanhalingstekens, eiendomsname sonder aanhalingstekens, ontbrekende komma, onpassende hakies, ongeldige escape of opmerkings.

JSON lyk soos 'n JavaScript-objek, maar is strenger. Eiendomsname en stringe benodig dubbele aanhalingstekens.

As jy Unexpected token sien, kan die gerapporteerde karakter wees waar ontleding gestop het—nie noodwendig waar die oorspronklike fout begin het nie.

Jou JSON is as ongeldig gemerk. Dit is gewoonlik ’n klein sintaksprobleem, nie ’n stukkende lêerformaat nie. Die sewe foute hieronder veroorsaak die meeste Unexpected token.

Hoekom breek JSON so maklik?

JSON is ’n dataformaat met streng sintaks. ’n JavaScript-objekliteraal kan dieselfde lyk en tóg ongeldige JSON wees. In standaard-JSON benodig eiendomsname en stringe dubbele aanhalingstekens, sluitkommas word nie toegelaat nie, en opmerkings is nie deel van die formaat nie.

1. Sluitkommas

Die ekstra komma ná die laaste eienskap is die probleem. Standaard-JSON laat dit nie toe nie.

Ongeldig

{
  "name": "Alex",
  "age": 30,
}

Geldig

{
  "name": "Alex",
  "age": 30
}

Dieselfde reël geld vir skikkings. Haal die komma ná die laaste item weg.

Ongeldig

[
  "red",
  "green",
]

Geldig

[
  "red",
  "green"
]

2. Enkelaanhalingstekens in plaas van dubbele

JavaScript aanvaar dikwels enkelaanhalingstekens. JSON doen dit nie. Eiendomsname en stringwaardes moet dubbele aanhalingstekens gebruik.

Ongeldig

{
  'name': 'Alex'
}

Geldig

{
  "name": "Alex"
}

3. Eiendomsname sonder aanhalingstekens

In JavaScript kan jy soms name sonder aanhalingstekens skryf. In JSON moet elke eiendomsnaam ’n string met dubbele aanhalingstekens wees.

Ongeldig

{
  name: "Alex",
  age: 30
}

Geldig

{
  "name": "Alex",
  "age": 30
}

4. Ontbrekende kommas tussen waardes

Eienskappe en skikkingitems benodig ’n komma tussen hulle. Die ontleder kan Unexpected token by die volgende aanhalingsteken of hakie rapporteer, nie by die ontbrekende komma self nie.

Ongeldig

{
  "name": "Alex"
  "age": 30
}

Geldig

{
  "name": "Alex",
  "age": 30
}

5. Ontbrekende of ekstra hakies

Objekte gebruik { }. Skikkings gebruik [ ]. Geneste JSON faal dikwels wanneer ] ontbreek, } extra is, of die twee omgeruil is. Tel oop- en toemaakpare.

Ongeldig

{
  "items": [1, 2
}

Geldig

{
  "items": [1, 2]
}

6. Ongeldige escape-reekse

Binne ’n JSON-string begin ’n terugskuinsstreep ’n escape. Reekse soos ", \ en \n is geldig. ’n Windows-pad geskryf C:\Users is dit nie: \U is nie ’n wettige JSON-escape nie. Dubbel die terugskuinsstrepe, anders stop die ontleder by daardie karakter.

Ongeldig

{"file":"C:\Users\Alex"}

Geldig

{"file":"C:\\Users\\Alex"}

7. Opmerkings in JSON

Standaard-JSON het geen opmerkings nie. Sommige opstellingshulpmiddels aanvaar // of /* */ (JSONC, JSON5 en soortgelyk). Dit is nie standaard-JSON nie, en JSON.parse verwerp dit.

Ongeldig

{
  // user name
  "name": "Alex"
}

Wat beteken Unexpected token?

Die ontleder het ’n karakter teëgekom wat nie op daardie posisie toegelaat is nie. Die gerapporteerde plek is waar lees gestop het. As jy vroeër ’n komma weggelaat het, kan die fout na die volgende eienskap se aanhalingsteken wys. Bewoording verskil per looptyd; moenie verwag dat elke blaaier dieselfde sin druk nie.

Wat beteken Unexpected end of JSON input?

Die teks het geëindig voordat die waarde voltooi was. Tipiese oorsake: ontbrekende } of ], afgekapte invoer, leë liggaam, of ’n afgekapte API-antwoord. Dit is nie een enkele fout nie.

Hoekom faal JSON.parse()?

JSON.parse() aanvaar slegs geldige JSON-teks. Dit slaag:

const text = '{"name":"Alex"}';
const data = JSON.parse(text);

Dit faal, want enkelaanhalingstekens is nie JSON nie:

const text = "{'name':'Alex'}";
JSON.parse(text);

Die presiese foutboodskap hang van die JavaScript-looptyd af. Behandel die boodskap as ’n wenk, en kyk dan kommas, aanhalingstekens en hakies naby daardie posisie.

JSON is nie dieselfde as 'n JavaScript-objek nie

'n JavaScript-objekliteraal kan lyk soos { name: 'Alex' }. Geldige JSON moet lyk soos { "name": "Alex" }: name en stringe met dubbele aanhalingstekens, geen sluitkomma, geen opmerkings.

  • JSON-teks
  • Die ontleder lees tekens
  • Geldige data of Unexpected token
Die foutmerk is waar ontleding gestop het, wat ná die werklike fout kan wees.

Hoe om ’n JSON-fout vinnig te vind

Werk in hierdie volgorde. Moenie begin deur die hele lêer te herskryf nie.

  1. Loop JSON deur ’n bekragtiger.
  2. Lees die eerste gerapporteerde fout.
  3. Kyk ’n bietjie voor die gerapporteerde posisie.
  4. Kontroleer kommas, veral sluit- en ontbrekendes.
  5. Kontroleer aanhalingstekens: slegs dubbele.
  6. Pas { } en [ ] by.
  7. Kontroleer terugskuinsstreep-escapes in stringe.
  8. Verwyder opmerkings as jy streng JSON nodig het.

Vinnige kaart van gewone regstellings:

Probleem Regstelling
SluitkommaSkrap die komma ná die laaste item.
EnkelaanhalingstekensGebruik dubbele aanhalingstekens vir name en stringe.
Sleutel sonder aanhalingstekensWrap die eiendomsnaam in dubbele aanhalingstekens.
Ontbrekende kommaSit 'n komma tussen eienskappe of skikkingitems.
Ontbrekende hakieMaak elke { }- en [ ]-paar toe.
Ongeldige escapeGebruik 'n wettige escape, of dubbel terugskuinsstrepe in paaie.
OpmerkingVerwyder // en /* */ vir standaard-JSON.

Toets en formateer JSON in die blaaier

NEXNARA JSON-formateerder en -vergelyking kan JSON op hierdie toestel nagaan.

Jy kan toets, mooi maak met 2 spasies, 4 spasies of tab, minify, twee dokumente vergelyk (JSON Diff), en ’n .json-lêer oopmaak. Ontleding gebruik JSON.parse in die blaaier, nie eval nie.

Dokumente groter as 5 MB kan stadig voel. Teks groter as 15 MB word nie in die blaaier verwerk nie, sodat die bladsy reageerend bly.

Die JSON-verwerking self gebeur in jou blaaier. Die teks word nie na ’n NEXNARA-bediener gestuur vir hierdie hulpmiddel nie. Advertensies en ander werffunksies gebruik steeds die netwerk; dit is apart van verwerking.

Moet jy ongeldige JSON nagaan? Maak JSON-formateerder en -vergelyking oop en plak die teks.

FAQ

Hoekom sê my JSON Unexpected token?

Die ontleder het ’n karakter teëgekom wat daar nie toegelaat is nie. Die werklike fout—dikwels ’n ontbrekende komma of ’n enkelaanhalingsteken—kan net voor daardie posisie sit.

Word sluitkommas in JSON toegelaat?

Nee. Standaard-JSON laat nie ’n komma ná die laaste eienskap of skikkingitem toe nie. JavaScript-objekliterale doen dit dikwels.

Kan JSON enkelaanhalingstekens gebruik?

Nee. Eiendomsname en stringe moet dubbele aanhalingstekens gebruik.

Kan JSON opmerkings bevat?

Nie in standaard-JSON nie. Sommige hulpmiddels aanvaar JSONC of JSON5 met opmerkings; JSON.parse verwerp hulle steeds.

Hoekom faal JSON.parse()?

Die string is nie geldige JSON nie. Tipiese oorsake is sluitkomma, enkelaanhalingstekens, onaanhalde sleutels, opmerkings, of ’n afgekapte waarde. Die presiese boodskap hang van die looptyd af.

Hoe toets ek of JSON geldig is?

Plak dit in ’n bekragtiger soos JSON-formateerder en -vergelyking, of roep JSON.parse in ’n konsole. As ontleding gooi, is die teks nie geldige JSON nie.