Tech Help
Almindelige JSON-fejl: afsluttende komma, anførselstegn og Unexpected token
Ret ugyldig JSON: afsluttende komma, enkelte anførselstegn, nøgler uden anførselstegn og Unexpected token. Se hvorfor JSON.parse fejler, og hvordan du validerer JSON.
De fleste JSON-fejl kommer af strenge syntaksregler: afsluttende komma, enkelte anførselstegn, egenskabsnavne uden anførselstegn, manglende komma, uens parenteser, ugyldig escape eller kommentarer.
JSON ligner et JavaScript-objekt, men er strengere. Egenskabsnavne og strenge skal have dobbelte anførselstegn.
Hvis du ser Unexpected token, kan det rapporterede tegn være dér, hvor parsningen stoppede—ikke nødvendigvis dér, den oprindelige fejl begyndte.
Din JSON er markeret ugyldig. Det er som regel et lille syntaksproblem, ikke et ødelagt filformat. De syv fejl nedenfor forårsager de fleste Unexpected token.
Hvorfor går JSON så let i stykker?
JSON er et dataformat med streng syntaks. En JavaScript-objektliteral kan se ens ud og alligevel være ugyldig JSON. I standard-JSON skal egenskabsnavne og strenge have dobbelte anførselstegn, afsluttende komma er ikke tilladt, og kommentarer er ikke en del af formatet.
1. Afsluttende kommaer
Det ekstra komma efter den sidste egenskab er problemet. Standard-JSON tillader det ikke.
Ugyldig
{
"name": "Alex",
"age": 30,
}
Gyldig
{
"name": "Alex",
"age": 30
}
Samme regel gælder arrays. Fjern kommaet efter det sidste element.
Ugyldig
[
"red",
"green",
]
Gyldig
[
"red",
"green"
]
2. Enkelt anførselstegn i stedet for dobbelt
JavaScript accepterer ofte enkelte anførselstegn. JSON gør ikke. Både egenskabsnavne og strengværdier skal bruge dobbelte anførselstegn.
Ugyldig
{
'name': 'Alex'
}
Gyldig
{
"name": "Alex"
}
3. Egenskabsnavne uden anførselstegn
I JavaScript kan du nogle gange skrive name uden anførselstegn. I JSON skal hvert egenskabsnavn være en streng med dobbelte anførselstegn.
Ugyldig
{
name: "Alex",
age: 30
}
Gyldig
{
"name": "Alex",
"age": 30
}
4. Manglende komma mellem værdier
Egenskaber og array-elementer skal have et komma imellem. Parseren kan rapportere Unexpected token ved næste anførselstegn eller klamme, ikke ved det manglende komma.
Ugyldig
{
"name": "Alex"
"age": 30
}
Gyldig
{
"name": "Alex",
"age": 30
}
5. Manglende eller ekstra klammer og parenteser
Objekter bruger { }. Arrays bruger [ ]. Indlejret JSON fejler ofte, når ] mangler, } er for meget, eller de to er byttet. Tæl åbnende og lukkende par.
Ugyldig
{
"items": [1, 2
}
Gyldig
{
"items": [1, 2]
}
6. Ugyldige escape-sekvenser
Inde i en JSON-streng starter et omvendt skråstreg en escape. Sekvenser som ", \ og \n er gyldige. En Windows-sti skrevet C:\Users er det ikke: \U er ikke en lovlig JSON-escape. Fordobl omvendte skråstreger, ellers stopper parseren på det tegn.
Ugyldig
{"file":"C:\Users\Alex"}
Gyldig
{"file":"C:\\Users\\Alex"}
7. Kommentarer i JSON
Standard-JSON har ingen kommentarer. Nogle konfigurationsværktøjer accepterer // eller /* */ (JSONC, JSON5 og lignende). Det er ikke standard-JSON, og JSON.parse afviser det.
Ugyldig
{
// user name
"name": "Alex"
}
Hvad betyder Unexpected token?
Parseren mødte et tegn, der ikke var tilladt på den position. Det rapporterede sted er dér, læsningen stoppede. Hvis du udelod et komma tidligere, kan fejlen pege på næste egenskabs anførselstegn. Formuleringen varierer efter runtime; forvent ikke, at hver browser printer den samme sætning.
Hvad betyder Unexpected end of JSON input?
Teksten sluttede, før værdien var færdig. Typiske årsager er manglende } eller ], afskåret input, tom krop eller et afbrudt API-svar. Det er ikke én enkelt fejl.
Hvorfor fejler JSON.parse()?
JSON.parse() accepterer kun gyldig JSON-tekst. Dette lykkes:
const text = '{"name":"Alex"}';
const data = JSON.parse(text);
Dette fejler, fordi enkelte anførselstegn ikke er JSON:
const text = "{'name':'Alex'}";
JSON.parse(text);
Den nøjagtige fejltekst afhænger af JavaScript-runtimen. Behandl beskeden som et hint, og tjek derefter komma, anførselstegn og parenteser nær den position.
En JavaScript-objektliteral kan se ud som { name: 'Alex' }. Gyldig JSON skal se ud som { "name": "Alex" }: dobbeltquotede navne og strenge, intet afsluttende komma, ingen kommentarer.
- JSON-tekst
- Parseren læser tokens
- Gyldige data eller Unexpected token
Sådan finder du en JSON-fejl hurtigt
Arbejd i denne rækkefølge. Begynd ikke med at omskrive hele filen.
- Kør JSON gennem en validator.
- Læs den første rapporterede fejl.
- Kig lidt før den rapporterede position.
- Tjek kommaer, især afsluttende og manglende.
- Tjek anførselstegn: kun dobbelte.
- Match { } og [ ].
- Tjek omvendt-skråstreg-escape i strenge.
- Fjern kommentarer, hvis du skal bruge streng JSON.
Hurtigt kort over de sædvanlige rettelser:
| Problem | Rettelse |
|---|---|
| Afsluttende komma | Slet kommaet efter det sidste element. |
| Enkelt anførselstegn | Brug dobbelte anførselstegn til navne og strenge. |
| Nøgle uden anførselstegn | Pak egenskabsnavnet ind i dobbelte anførselstegn. |
| Manglende komma | Sæt et komma mellem egenskaber eller array-elementer. |
| Manglende parentes | Luk hvert { }- og [ ]-par. |
| Ugyldig escape | Brug en lovlig escape, eller fordobl omvendte skråstreger i stier. |
| Kommentar | Fjern // og /* */ til standard-JSON. |
Valider og formatér JSON i browseren
NEXNARA Formatér og sammenlign JSON kan tjekke JSON på denne enhed.
Du kan validere, pynte med 2 mellemrum, 4 mellemrum eller tabulator, minify, sammenligne to dokumenter (JSON Diff) og åbne en .json-fil. Parsning bruger JSON.parse i browseren, ikke eval.
Dokumenter større end 5 MB kan føles langsomme. Tekst større end 15 MB behandles ikke i browseren, så siden forbliver responsiv.
Selve JSON-behandlingen sker i din browser. Teksten sendes ikke til en NEXNARA-server for dette værktøj. Annoncer og andre sitefunktioner bruger stadig netværket; det er adskilt fra behandlingen.
Skal du tjekke ugyldig JSON? Åbn Formatér og sammenlign JSON og indsæt teksten.
FAQ
Hvorfor siger min JSON Unexpected token?
Parseren ramte et tegn, der ikke var tilladt dér. Den rigtige fejl—ofte et manglende komma eller et enkelt anførselstegn—kan sidde lige før den position.
Er afsluttende komma tilladt i JSON?
Nej. Standard-JSON tillader ikke et komma efter den sidste egenskab eller array-element. JavaScript-objektliteraler gør det ofte.
Kan JSON bruge enkelte anførselstegn?
Nej. Egenskabsnavne og strenge skal bruge dobbelte anførselstegn.
Kan JSON indeholde kommentarer?
Ikke i standard-JSON. Nogle værktøjer accepterer JSONC eller JSON5 med kommentarer; JSON.parse afviser dem alligevel.
Hvorfor fejler JSON.parse()?
Strengen er ikke gyldig JSON. Typiske årsager er afsluttende komma, enkelte anførselstegn, nøgler uden anførselstegn, kommentarer eller en afskåret værdi. Den nøjagtige besked afhænger af runtimen.
Hvordan tjekker jeg, om JSON er gyldig?
Indsæt den i en validator som Formatér og sammenlign JSON, eller kald JSON.parse i en konsol. Hvis parsningen kaster, er teksten ikke gyldig JSON.