Aiuto tecnico

Errori JSON comuni: virgola finale, virgolette e Unexpected token

Correggi JSON non valido: virgola finale, apici singoli, chiavi senza virgolette e Unexpected token. Perché JSON.parse fallisce.

Risposta rapida

La maggior parte degli errori JSON viene da una sintassi rigorosa: virgole finali, apici singoli, nomi di proprietà senza virgolette, virgole mancanti, parentesi spaiate, escape non validi o commenti.

JSON sembra un oggetto JavaScript, ma è più stretto. Nomi di proprietà e stringhe richiedono virgolette doppie.

Se vedi “Unexpected token”, il carattere indicato può essere dove l’analisi è fallita, non necessariamente dove è nata l’errore.

Il tuo JSON risulta non valido. Quasi sempre è un dettaglio di sintassi, non un formato rotto. I sette errori sotto causano la maggior parte degli Unexpected token.

Perché JSON si rompe così facilmente?

JSON è un formato dati con sintassi rigorosa. Un oggetto letterale JavaScript può sembrare simile e restare JSON non valido. Nel JSON standard nomi e stringhe usano virgolette doppie, le virgole finali non sono ammesse e i commenti non fanno parte del formato.

1. Virgole finali (trailing commas)

La virgola extra dopo l’ultima proprietà è il problema. Il JSON standard non la consente.

Non valido

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

Valido

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

La stessa regola vale per gli array. Togli la virgola dopo l’ultimo elemento.

Non valido

[
  "red",
  "green",
]

Valido

[
  "red",
  "green"
]

2. Apici singoli invece di virgolette doppie

JavaScript accetta spesso gli apici singoli. JSON no. Nomi di proprietà e valori stringa devono usare virgolette doppie.

Non valido

{
  'name': 'Alex'
}

Valido

{
  "name": "Alex"
}

3. Nomi di proprietà senza virgolette

In JavaScript a volte puoi scrivere name senza virgolette. In JSON ogni nome di proprietà deve essere una stringa tra virgolette doppie.

Non valido

{
  name: "Alex",
  age: 30
}

Valido

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

4. Virgole mancanti tra i valori

Serve una virgola tra proprietà e tra elementi di array. Il parser può segnalare Unexpected token sulla virgoletta o parentesi successiva, non sulla virgola mancante.

Non valido

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

Valido

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

5. Parentesi quadre e graffe in più o in meno

Gli oggetti usano { }. Gli array usano [ ]. Il JSON nidificato fallisce quando manca un ], avanza un } o i due sono scambiati. Conta le coppie di apertura e chiusura.

Non valido

{
  "items": [1, 2
}

Valido

{
  "items": [1, 2]
}

6. Sequenze di escape non valide

In una stringa JSON il backslash avvia un escape. Sequenze come ", \ e \n sono valide. Un percorso Windows scritto C:\Users non lo è: \U non è un escape JSON legale. Raddoppia i backslash o il parser si ferma su quel carattere.

Non valido

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

Valido

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

7. Commenti dentro JSON

Il JSON standard non ha commenti. Alcuni strumenti di config accettano // o /* */ (JSONC, JSON5 e simili). Non è JSON standard e JSON.parse lo rifiuta.

Non valido

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

Cosa significa “Unexpected token”?

Il parser ha incontrato un carattere non consentito in quella posizione. Il punto indicato è dove la lettura si è fermata. Se hai omesso una virgola prima, l’errore può puntare alla virgoletta della proprietà successiva. Il testo dipende dal runtime; non aspettarti la stessa frase in ogni browser.

Cosa significa “Unexpected end of JSON input”?

Il testo è finito prima che il valore fosse completo. Cause tipiche: manca un } o ], input troncato, corpo vuoto o risposta API tagliata. Non è un unico bug.

Perché JSON.parse() fallisce?

JSON.parse() accetta solo testo JSON valido. Questo riesce:

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

Questo fallisce, perché gli apici singoli non sono JSON:

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

Il messaggio esatto dipende dal runtime JavaScript. Usalo come indizio e controlla virgole, virgolette e parentesi vicino a quella posizione.

JSON non è un oggetto JavaScript

Un oggetto letterale JavaScript può sembrare { name: 'Alex' }. Il JSON valido deve sembrare { "name": "Alex" }: nomi e stringhe tra virgolette doppie, niente virgola finale, niente commenti.

  • Testo JSON
  • Il parser legge i token
  • Dati validi o Unexpected token
Il segno di errore è dove l’analisi si è fermata; può stare dopo l’errore reale.

Come trovare un errore JSON in fretta

Segui quest’ordine. Non iniziare riscrivendo tutto il file.

  1. Passa il JSON in un validatore.
  2. Leggi il primo errore segnalato.
  3. Guarda un po’ prima della posizione indicata.
  4. Controlla le virgole, soprattutto finali e mancanti.
  5. Controlla le virgolette: solo doppie.
  6. Abbina { } e [ ].
  7. Controlla gli escape con backslash nelle stringhe.
  8. Rimuovi i commenti se serve JSON stretto.

Mappa rapida delle correzioni usuali:

Problema Correzione
Virgola finaleCancella la virgola dopo l’ultimo elemento.
Apici singoliUsa virgolette doppie per nomi e stringhe.
Chiave senza virgoletteMetti il nome della proprietà tra virgolette doppie.
Virgola mancanteMetti una virgola tra proprietà o elementi.
Parentesi mancanteChiudi ogni coppia { } e [ ].
Escape non validoUsa un escape legale o raddoppia i backslash nei percorsi.
CommentoRimuovi // e /* */ per JSON standard.

Validare e formattare JSON nel browser

NEXNARA Formattare e confrontare JSON può controllare JSON su questo dispositivo.

Puoi validare, formattare con 2 spazi, 4 spazi o tabulazioni, minificare, confrontare due documenti (JSON Diff) e aprire un file .json. L’analisi usa JSON.parse nel browser, non eval.

Documenti oltre 5 MB possono sembrare lenti. Testo oltre 15 MB non viene elaborato nel browser, così la pagina resta reattiva.

L’elaborazione JSON avviene nel browser. Questo strumento non invia il testo a un server NEXNARA. Annunci e altre funzioni del sito usano ancora la rete; è distinto dall’elaborazione.

Devi controllare JSON non valido? Apri Formattare e confrontare JSON e incolla il testo.

FAQ

Perché il mio JSON dice “Unexpected token”?

Il parser ha trovato un carattere non consentito in quel punto. L’errore reale — spesso una virgola mancante o un apice singolo — può stare subito prima.

Le virgole finali sono ammesse in JSON?

No. Il JSON standard non consente una virgola dopo l’ultima proprietà o l’ultimo elemento di array. Gli oggetti letterali JavaScript spesso sì.

JSON può usare apici singoli?

No. Nomi di proprietà e stringhe devono usare virgolette doppie.

JSON può contenere commenti?

Non nel JSON standard. Alcuni strumenti accettano JSONC o JSON5 con commenti; JSON.parse li rifiuta comunque.

Perché JSON.parse() fallisce?

La stringa non è JSON valido. Cause tipiche: virgole finali, apici singoli, chiavi senza virgolette, commenti o valore troncato. Il messaggio esatto dipende dal runtime.

Come verifico se il JSON è valido?

Incollalo in un validatore come Formattare e confrontare JSON o chiama JSON.parse in una console. Se l’analisi lancia un’eccezione, il testo non è JSON valido.