Tech Help

Vanlige JSON-feil: avsluttende komma, anførselstegn og Unexpected token

Fiks ugyldig JSON: avsluttende komma, enkle anførselstegn, nøkler uten anførselstegn og Unexpected token. Se hvorfor JSON.parse feiler, og hvordan du validerer JSON.

Kort svar

De fleste JSON-feil kommer av strenge syntaksregler: avsluttende komma, enkle anførselstegn, egenskapsnavn uten anførselstegn, manglende komma, umatchede parenteser, ugyldig escape eller kommentarer.

JSON ligner et JavaScript-objekt, men er strengere. Egenskapsnavn og strenger trenger doble anførselstegn.

Hvis du ser Unexpected token, kan det rapporterte tegnet være der parsingen stoppet—ikke nødvendigvis der den opprinnelige feilen begynte.

JSON-en din er merket ugyldig. Det er vanligvis et lite syntaksproblem, ikke et ødelagt filformat. De sju feilene under forårsaker de fleste Unexpected token.

Hvorfor går JSON så lett i stykker?

JSON er et dataformat med streng syntaks. En JavaScript-objektliteral kan se lik ut og likevel være ugyldig JSON. I standard-JSON trenger egenskapsnavn og strenger doble anførselstegn, avsluttende komma er ikke tillatt, og kommentarer er ikke del av formatet.

1. Avsluttende komma

Det ekstra kommaet etter den siste egenskapen er problemet. Standard-JSON tillater det ikke.

Ugyldig

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

Gyldig

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

Samme regel gjelder arrayer. Fjern kommaet etter det siste elementet.

Ugyldig

[
  "red",
  "green",
]

Gyldig

[
  "red",
  "green"
]

2. Enkle anførselstegn i stedet for doble

JavaScript godtar ofte enkle anførselstegn. JSON gjør ikke det. Både egenskapsnavn og strengverdier må bruke doble anførselstegn.

Ugyldig

{
  'name': 'Alex'
}

Gyldig

{
  "name": "Alex"
}

3. Egenskapsnavn uten anførselstegn

I JavaScript kan du noen ganger skrive name uten anførselstegn. I JSON må hvert egenskapsnavn være en streng med doble anførselstegn.

Ugyldig

{
  name: "Alex",
  age: 30
}

Gyldig

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

4. Manglende komma mellom verdier

Egenskaper og array-elementer trenger et komma mellom seg. Parseren kan rapportere Unexpected token ved neste anførselstegn eller klamme, ikke ved det manglende kommaet.

Ugyldig

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

Gyldig

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

5. Manglende eller ekstra klammer og hakeparenteser

Objekter bruker { }. Arrayer bruker [ ]. Nøstet JSON feiler ofte når ] mangler, } er for mye, eller de to er byttet. Tell åpnende og lukkende par.

Ugyldig

{
  "items": [1, 2
}

Gyldig

{
  "items": [1, 2]
}

6. Ugyldige escape-sekvenser

Inne i en JSON-streng starter en omvendt skråstrek en escape. Sekvenser som ", \ og \n er gyldige. En Windows-sti skrevet C:\Users er det ikke: \U er ikke en lovlig JSON-escape. Doble de omvendte skråstrekene, ellers stopper parseren på det tegnet.

Ugyldig

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

Gyldig

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

7. Kommentarer i JSON

Standard-JSON har ingen kommentarer. Noen konfigurasjonsverktøy godtar // eller /* */ (JSONC, JSON5 og lignende). Det er ikke standard-JSON, og JSON.parse avviser det.

Ugyldig

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

Hva betyr Unexpected token?

Parseren møtte et tegn som ikke var tillatt på den posisjonen. Det rapporterte stedet er der lesingen stoppet. Hvis du utelot et komma tidligere, kan feilen peke på neste egenskap sitt anførselstegn. Ordlyden varierer etter runtime; ikke forvent at hver nettleser skriver den samme setningen.

Hva betyr Unexpected end of JSON input?

Teksten tok slutt før verdien var ferdig. Typiske årsaker er manglende } eller ], avkuttet inndata, tom kropp eller et avbrutt API-svar. Det er ikke én enkelt feil.

Hvorfor feiler JSON.parse()?

JSON.parse() godtar bare gyldig JSON-tekst. Dette lykkes:

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

Dette feiler, fordi enkle anførselstegn ikke er JSON:

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

Den nøyaktige feilmeldingen avhenger av JavaScript-runtimen. Behandle meldingen som et hint, og sjekk deretter komma, anførselstegn og parenteser nær den posisjonen.

JSON er ikke det samme som et JavaScript-objekt

En JavaScript-objektliteral kan se ut som { name: 'Alex' }. Gyldig JSON må se ut som { "name": "Alex" }: dobbeltanførte navn og strenger, ingen avsluttende komma, ingen kommentarer.

  • JSON-tekst
  • Parseren leser tokens
  • Gyldige data eller Unexpected token
Feilmerket er der parsingen stoppet, noe som kan være etter den egentlige feilen.

Slik finner du en JSON-feil raskt

Jobb i denne rekkefølgen. Ikke start med å skrive om hele filen.

  1. Kjør JSON gjennom en validator.
  2. Les den første rapporterte feilen.
  3. Se litt før den rapporterte posisjonen.
  4. Sjekk komma, særlig avsluttende og manglende.
  5. Sjekk anførselstegn: bare doble.
  6. Match { } og [ ].
  7. Sjekk omvendt-skråstrek-escape i strenger.
  8. Fjern kommentarer hvis du trenger streng JSON.

Raskt kart over vanlige rettinger:

Problem Rettelse
Avsluttende kommaSlett kommaet etter det siste elementet.
Enkle anførselstegnBruk doble anførselstegn for navn og strenger.
Nøkkel uten anførselstegnPakk egenskapsnavnet inn i doble anførselstegn.
Manglende kommaSett et komma mellom egenskaper eller array-elementer.
Manglende parentesLukk hvert { }- og [ ]-par.
Ugyldig escapeBruk en lovlig escape, eller doble omvendte skråstreker i stier.
KommentarFjern // og /* */ for standard-JSON.

Valider og formater JSON i nettleseren

NEXNARA Formater og sammenlign JSON kan sjekke JSON på denne enheten.

Du kan validere, pynte med 2 mellomrom, 4 mellomrom eller tabulator, minify, sammenligne to dokumenter (JSON Diff) og åpne en .json-fil. Parsing bruker JSON.parse i nettleseren, ikke eval.

Dokumenter større enn 5 MB kan føles trege. Tekst større enn 15 MB behandles ikke i nettleseren, så siden forblir responsiv.

Selve JSON-behandlingen skjer i nettleseren din. Teksten sendes ikke til en NEXNARA-server for dette verktøyet. Annonser og andre nettstedfunksjoner bruker fortsatt nettverket; det er atskilt fra behandlingen.

Trenger du å sjekke ugyldig JSON? Åpne Formater og sammenlign JSON og lim inn teksten.

FAQ

Hvorfor sier JSON-en min Unexpected token?

Parseren traff et tegn som ikke var tillatt der. Den egentlige feilen—ofte et manglende komma eller et enkelt anførselstegn—kan sitte like før den posisjonen.

Er avsluttende komma tillatt i JSON?

Nei. Standard-JSON tillater ikke komma etter den siste egenskapen eller array-elementet. JavaScript-objektliteraler gjør det ofte.

Kan JSON bruke enkle anførselstegn?

Nei. Egenskapsnavn og strenger må bruke doble anførselstegn.

Kan JSON inneholde kommentarer?

Ikke i standard-JSON. Noen verktøy godtar JSONC eller JSON5 med kommentarer; JSON.parse avviser dem likevel.

Hvorfor feiler JSON.parse()?

Strengen er ikke gyldig JSON. Typiske årsaker er avsluttende komma, enkle anførselstegn, nøkler uten anførselstegn, kommentarer eller en avkuttet verdi. Den nøyaktige meldingen avhenger av runtimen.

Hvordan sjekker jeg om JSON er gyldig?

Lim den inn i en validator som Formater og sammenlign JSON, eller kall JSON.parse i en konsoll. Hvis parsingen kaster, er teksten ikke gyldig JSON.