Technische hulp

Veelvoorkomende JSON-fouten: trailing comma, aanhalingstekens en Unexpected token

Ongeldige JSON herstellen: trailing comma, enkele quotes, keys zonder quotes en Unexpected token. Waarom JSON.parse faalt.

Kort antwoord

De meeste JSON-fouten komen door strikte syntax: trailing commas, enkele aanhalingstekens, propertynamen zonder quotes, ontbrekende komma’s, ongelijke haken, ongeldige escapes of commentaar.

JSON lijkt op een JavaScript-object, maar is strenger. Propertynamen en strings hebben dubbele aanhalingstekens nodig.

Zie je “Unexpected token”, dan kan het gemelde teken zijn waar het parsen stopte—niet per se waar de fout begon.

Je JSON wordt als ongeldig gemarkeerd. Meestal is dat een klein syntaxdetail, geen kapot formaat. De zeven fouten hieronder veroorzaken de meeste Unexpected token-meldingen.

Waarom breekt JSON zo makkelijk?

JSON is een dataformaat met strikte syntax. Een JavaScript-objectliteral kan erop lijken en tóch ongeldige JSON zijn. In standaard-JSON hebben namen en strings dubbele quotes nodig, trailing commas zijn verboden en commentaar hoort niet bij het formaat.

1. Trailing commas

De extra komma na de laatste property is het probleem. Standaard-JSON staat die niet toe.

Ongeldig

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

Geldig

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

Dezelfde regel geldt voor arrays. Haal de komma na het laatste item weg.

Ongeldig

[
  "red",
  "green",
]

Geldig

[
  "red",
  "green"
]

2. Enkele in plaats van dubbele aanhalingstekens

JavaScript accepteert vaak enkele quotes. JSON niet. Propertynamen en stringwaarden moeten dubbele aanhalingstekens gebruiken.

Ongeldig

{
  'name': 'Alex'
}

Geldig

{
  "name": "Alex"
}

3. Propertynamen zonder aanhalingstekens

In JavaScript kun je name soms zonder quotes schrijven. In JSON moet elke propertynaam een string tussen dubbele quotes zijn.

Ongeldig

{
  name: "Alex",
  age: 30
}

Geldig

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

4. Ontbrekende komma’s tussen waarden

Tussen properties en array-items hoort een komma. De parser kan Unexpected token melden bij het volgende quote of de accolade, niet bij de ontbrekende komma.

Ongeldig

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

Geldig

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

5. Te veel of te weinig haken en accolades

Objecten gebruiken { }. Arrays gebruiken [ ]. Geneste JSON faalt als een ] ontbreekt, een } te veel is of beide zijn omgewisseld. Tel openende en sluitende paren.

Ongeldig

{
  "items": [1, 2
}

Geldig

{
  "items": [1, 2]
}

6. Ongeldige escapesequenties

In een JSON-string start de backslash een escape. Sequenties zoals ", \ en \n zijn geldig. Een Windows-pad als C:\Users is dat niet: \U is geen legale JSON-escape. Verdubbel de backslashes, anders stopt de parser op dat teken.

Ongeldig

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

Geldig

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

7. Commentaar in JSON

Standaard-JSON heeft geen commentaar. Sommige configtools accepteren // of /* */ (JSONC, JSON5 en vergelijkbaar). Dat is geen standaard-JSON, en JSON.parse weigert het.

Ongeldig

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

Wat betekent “Unexpected token”?

De parser zag een teken dat op die plek niet mag. De gemelde plek is waar het lezen stopte. Miste je eerder een komma, dan wijst de fout vaak naar het quote van de volgende property. De tekst hangt van de runtime af; verwacht niet dezelfde zin in elke browser.

Wat betekent “Unexpected end of JSON input”?

De tekst eindigde voordat de waarde af was. Typisch: een ontbrekende } of ], afgekapte invoer, lege body of een afgebroken API-antwoord. Het is niet één enkele bug.

Waarom faalt JSON.parse()?

JSON.parse() accepteert alleen geldige JSON-tekst. Dit lukt:

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

Dit faalt, omdat enkele quotes geen JSON zijn:

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

De exacte melding hangt van de JavaScript-runtime af. Gebruik hem als hint en controleer komma’s, quotes en haken bij die positie.

JSON is niet hetzelfde als een JavaScript-object

Een JavaScript-objectliteral kan eruitzien als { name: 'Alex' }. Geldige JSON moet eruitzien als { "name": "Alex" }: namen en strings tussen dubbele quotes, geen trailing comma, geen commentaar.

  • JSON-tekst
  • Parser leest tokens
  • Geldige data of Unexpected token
De foutmarkering is waar het parsen stopte; dat kan ná de echte fout liggen.

Snel een JSON-fout vinden

Volg deze volgorde. Begin niet met het herschrijven van het hele bestand.

  1. Haal de JSON door een validator.
  2. Lees de eerste gemelde fout.
  3. Kijk iets vóór de gemelde positie.
  4. Check komma’s, vooral trailing en ontbrekende.
  5. Check aanhalingstekens: alleen dubbele.
  6. Match { } en [ ].
  7. Check backslash-escapes in strings.
  8. Verwijder commentaar als je strikte JSON nodig hebt.

Snel overzicht van de gebruikelijke fixes:

Probleem Fix
Trailing commaVerwijder de komma na het laatste item.
Enkele quotesGebruik dubbele quotes voor namen en strings.
Key zonder quotesZet de propertynaam tussen dubbele quotes.
Ontbrekende kommaZet een komma tussen properties of array-items.
Ontbrekende haakSluit elk { }- en [ ]-paar.
Ongeldige escapeGebruik een legale escape of verdubbel backslashes in paden.
CommentaarVerwijder // en /* */ voor standaard-JSON.

JSON in de browser valideren en formatteren

NEXNARA JSON opmaken en vergelijken kan JSON op dit apparaat controleren.

Je kunt valideren, pretty-printen met 2 spaties, 4 spaties of tabs, minificeren, twee documenten vergelijken (JSON Diff) en een .json-bestand openen. Parsen gebruikt JSON.parse in de browser, niet eval.

Documenten groter dan 5 MB kunnen traag aanvoelen. Tekst groter dan 15 MB wordt niet in de browser verwerkt, zodat de pagina reageert blijft.

De JSON-verwerking zelf gebeurt in je browser. Deze tool stuurt de tekst niet naar een NEXNARA-server. Advertenties en andere sitefuncties gebruiken nog steeds het netwerk; dat is los van de verwerking.

Ongeldige JSON checken? Open JSON opmaken en vergelijken en plak de tekst.

FAQ

Waarom zegt mijn JSON “Unexpected token”?

De parser zag op die plek een teken dat niet mag. De echte fout—vaak een ontbrekende komma of een enkel aanhalingsteken—kan vlak daarvoor zitten.

Zijn trailing commas toegestaan in JSON?

Nee. Standaard-JSON staat geen komma toe na de laatste property of het laatste array-item. JavaScript-objectliterals doen dat vaak wel.

Mag JSON enkele aanhalingstekens gebruiken?

Nee. Propertynamen en strings moeten dubbele aanhalingstekens gebruiken.

Mag JSON commentaar bevatten?

Niet in standaard-JSON. Sommige tools accepteren JSONC of JSON5 met commentaar; JSON.parse weigert ze toch.

Waarom faalt JSON.parse()?

De string is geen geldige JSON. Typisch: trailing commas, enkele quotes, keys zonder quotes, commentaar of een afgekapte waarde. De exacte melding hangt van de runtime af.

Hoe check ik of JSON geldig is?

Plak het in een validator zoals JSON opmaken en vergelijken of roep JSON.parse aan in een console. Gooit het parsen, dan is de tekst geen geldige JSON.