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.
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.
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
Come trovare un errore JSON in fretta
Segui quest’ordine. Non iniziare riscrivendo tutto il file.
- Passa il JSON in un validatore.
- Leggi il primo errore segnalato.
- Guarda un po’ prima della posizione indicata.
- Controlla le virgole, soprattutto finali e mancanti.
- Controlla le virgolette: solo doppie.
- Abbina { } e [ ].
- Controlla gli escape con backslash nelle stringhe.
- Rimuovi i commenti se serve JSON stretto.
Mappa rapida delle correzioni usuali:
| Problema | Correzione |
|---|---|
| Virgola finale | Cancella la virgola dopo l’ultimo elemento. |
| Apici singoli | Usa virgolette doppie per nomi e stringhe. |
| Chiave senza virgolette | Metti il nome della proprietà tra virgolette doppie. |
| Virgola mancante | Metti una virgola tra proprietà o elementi. |
| Parentesi mancante | Chiudi ogni coppia { } e [ ]. |
| Escape non valido | Usa un escape legale o raddoppia i backslash nei percorsi. |
| Commento | Rimuovi // 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.