Tech Help

Vanliga JSON-fel: avslutande kommatecken, citattecken och Unexpected token

Fixa ogiltig JSON: avslutande kommatecken, enkla citattecken, oquotade nycklar och Unexpected token. Se varför JSON.parse misslyckas och hur du validerar JSON.

Snabbsvar

De flesta JSON-fel kommer från strikta syntaxregler: avslutande kommatecken, enkla citattecken, oquotade egenskapsnamn, saknade kommatecken, ojämna parenteser, ogiltiga escape eller kommentarer.

JSON liknar ett JavaScript-objekt men är striktare. Egenskapsnamn och strängar behöver dubbla citattecken.

Om du ser Unexpected token kan det rapporterade tecknet vara där parsningen stannade—inte nödvändigtvis där det ursprungliga felet började.

Din JSON är märkt ogiltig. Det är oftast ett litet syntaxproblem, inte ett trasigt filformat. De sju misstagen nedan orsakar de flesta Unexpected token.

Varför går JSON så lätt sönder?

JSON är ett dataformat med strikt syntax. En JavaScript-objektliteral kan se likadan ut och ändå vara ogiltig JSON. I standard-JSON behöver egenskapsnamn och strängar dubbla citattecken, avslutande kommatecken är inte tillåtna och kommentarer ingår inte i formatet.

1. Avslutande kommatecken

Det extra kommatecknet efter sista egenskapen är problemet. Standard-JSON tillåter det inte.

Ogiltig

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

Giltig

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

Samma regel gäller arrayer. Ta bort kommatecknet efter sista elementet.

Ogiltig

[
  "red",
  "green",
]

Giltig

[
  "red",
  "green"
]

2. Enkla citattecken i stället för dubbla

JavaScript accepterar ofta enkla citattecken. JSON gör det inte. Både egenskapsnamn och strängvärden måste använda dubbla citattecken.

Ogiltig

{
  'name': 'Alex'
}

Giltig

{
  "name": "Alex"
}

3. Oquotade egenskapsnamn

I JavaScript kan du ibland skriva name utan citattecken. I JSON måste varje egenskapsnamn vara en sträng med dubbla citattecken.

Ogiltig

{
  name: "Alex",
  age: 30
}

Giltig

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

4. Saknade kommatecken mellan värden

Egenskaper och arrayelement behöver ett kommatecken mellan sig. Parsern kan rapportera Unexpected token vid nästa citattecken eller klammer, inte vid det saknade kommatecknet.

Ogiltig

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

Giltig

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

5. Saknade eller extra klamrar och hakparenteser

Objekt använder { }. Arrayer använder [ ]. Nästlad JSON misslyckas ofta när ] saknas, } är extra eller de två bytts. Räkna öppnande och stängande par.

Ogiltig

{
  "items": [1, 2
}

Giltig

{
  "items": [1, 2]
}

6. Ogiltiga escape-sekvenser

Inne i en JSON-sträng börjar ett bakstreck en escape. Sekvenser som ", \ och \n är giltiga. En Windows-sökväg skriven C:\Users är det inte: \U är inte en laglig JSON-escape. Dubbla bakstrecken, annars stannar parsern på det tecknet.

Ogiltig

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

Giltig

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

7. Kommentarer i JSON

Standard-JSON har inga kommentarer. Vissa konfigverktyg accepterar // eller /* */ (JSONC, JSON5 och liknande). Det är inte standard-JSON, och JSON.parse avvisar det.

Ogiltig

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

Vad betyder Unexpected token?

Parsern mötte ett tecken som inte var tillåtet på den positionen. Den rapporterade platsen är där läsningen stannade. Om du utelämnade ett kommatecken tidigare kan felet peka på nästa egenskaps citattecken. Formuleringen varierar per runtime; räkna inte med att varje webbläsare skriver samma mening.

Vad betyder Unexpected end of JSON input?

Texten tog slut innan värdet var komplett. Typiska orsaker är saknad } eller ], avklippt indata, tom kropp eller ett avbrutet API-svar. Det är inte en enda bugg.

Varför misslyckas JSON.parse()?

JSON.parse() tar bara giltig JSON-text. Detta lyckas:

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

Detta misslyckas, eftersom enkla citattecken inte är JSON:

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

Det exakta felmeddelandet beror på JavaScript-runtimen. Behandla meddelandet som en ledtråd och inspektera sedan kommatecken, citattecken och parenteser nära den positionen.

JSON är inte samma sak som ett JavaScript-objekt

En JavaScript-objektliteral kan se ut som { name: 'Alex' }. Giltig JSON måste se ut som { "name": "Alex" }: dubbelquotade namn och strängar, inget avslutande kommatecken, inga kommentarer.

  • JSON-text
  • Parsern läser token
  • Giltiga data eller Unexpected token
Felmarkeringen är där parsningen stannade, vilket kan vara efter det verkliga misstaget.

Så hittar du ett JSON-fel snabbt

Arbeta i den här ordningen. Börja inte med att skriva om hela filen.

  1. Kör JSON genom en validator.
  2. Läs det första rapporterade felet.
  3. Titta lite före den rapporterade positionen.
  4. Kontrollera kommatecken, särskilt avslutande och saknade.
  5. Kontrollera citattecken: bara dubbla.
  6. Matcha { } och [ ].
  7. Kontrollera bakstreck-escape i strängar.
  8. Ta bort kommentarer om du behöver strikt JSON.

Snabb karta över vanliga rättningar:

Problem Åtgärd
Avslutande kommateckenTa bort kommatecknet efter sista elementet.
Enkla citatteckenAnvänd dubbla citattecken för namn och strängar.
Oquotad nyckelOmge egenskapsnamnet med dubbla citattecken.
Saknat kommateckenSätt ett kommatecken mellan egenskaper eller arrayelement.
Saknad parentesStäng varje { }- och [ ]-par.
Ogiltig escapeAnvänd en laglig escape, eller dubbla bakstreck i sökvägar.
KommentarTa bort // och /* */ för standard-JSON.

Validera och formatera JSON i webbläsaren

NEXNARA Formatera och jämför JSON kan kontrollera JSON på den här enheten.

Du kan validera, snygga till med 2 mellanslag, 4 mellanslag eller tabb, minify, jämföra två dokument (JSON Diff) och öppna en .json-fil. Parsning använder JSON.parse i webbläsaren, inte eval.

Dokument större än 5 MB kan kännas långsamma. Text större än 15 MB behandlas inte i webbläsaren, så sidan förblir responsiv.

Själva JSON-bearbetningen sker i din webbläsare. Texten skickas inte till en NEXNARA-server för det här verktyget. Annonser och andra sajtfunktioner använder fortfarande nätverket; det är skilt från bearbetningen.

Behöver du kontrollera ogiltig JSON? Öppna Formatera och jämför JSON och klistra in texten.

FAQ

Varför säger min JSON Unexpected token?

Parsern träffade ett tecken som inte var tillåtet där. Det verkliga misstaget—ofta ett saknat kommatecken eller ett enkelt citattecken—kan sitta precis före den positionen.

Är avslutande kommatecken tillåtna i JSON?

Nej. Standard-JSON tillåter inte ett kommatecken efter sista egenskapen eller arrayelementet. JavaScript-objektliteraler gör det ofta.

Kan JSON använda enkla citattecken?

Nej. Egenskapsnamn och strängar måste använda dubbla citattecken.

Kan JSON innehålla kommentarer?

Inte i standard-JSON. Vissa verktyg accepterar JSONC eller JSON5 med kommentarer; JSON.parse avvisar dem ändå.

Varför misslyckas JSON.parse()?

Strängen är inte giltig JSON. Typiska orsaker är avslutande kommatecken, enkla citattecken, oquotade nycklar, kommentarer eller ett avklippt värde. Det exakta meddelandet beror på runtimen.

Hur kontrollerar jag om JSON är giltig?

Klistra in den i en validator som Formatera och jämför JSON, eller anropa JSON.parse i en konsol. Om parsningen kastar är texten inte giltig JSON.