Expecting ',' delimiter: line L column C (char N)
Il parser si aspettava che il contenitore corrente proseguisse con una virgola. La parte confusa è che la posizione spesso indica un punto che sembra perfettamente a posto, perché l’errore vero è poco prima: quasi sempre una virgoletta che ha chiuso la stringa prima del previsto.
Incolla il tuo JSON e vedi esattamente dove si rompe
Nulla di ciò che incolli lascia il tuo browser. L’allowlist connect-src ne fa una garanzia del browser anziché una promessa. Verificalo tu stesso
Che cosa lo provoca davvero
In ordine di quanto spesso ciascuno si rivela essere la risposta.
-
01 Una virgoletta doppia senza escape dentro una stringa
La virgoletta interna chiude la stringa in anticipo, così il testo che segue viene letto come un nuovo token là dove ci si aspettava una virgola. La domanda più votata su Stack Overflow per questo errore si intitola letteralmente «Valid JSON giving JSONDecodeError», che riassume l’intera esperienza in una riga.
Si rompe
{"quote": "he said "yes" loudly"}Funziona
{"quote": "he said \"yes\" loudly"} -
02 Una virgola davvero mancante
Tra due membri di un oggetto o due elementi di un array.
-
03 Un backslash isolato prima della virgoletta di chiusura
Un percorso Windows che finisce con un backslash esegue l’escape della virgoletta, così la stringa prosegue e la virgola successiva non arriva mai dove il parser la aspetta.
-
04 Il file è troncato
Se la posizione è la fine dell’input, il documento è stato tagliato anziché scritto male.
Lo stesso errore in altri runtime
Il problema di fondo è identico; cambia solo la formulazione. Se un collega segnala uno di questi messaggi, sta guardando esattamente la stessa cosa che vedi tu.
| JavaScript (V8) | Expected ',' or '}' after property value in JSON at position N |
|---|
Domande frequenti
- Il JSON a me sembra corretto. Perché fallisce?
- Guarda il carattere immediatamente prima della posizione segnalata, non la posizione stessa. Una stringa chiusa in anticipo resta invisibile finché non conti le virgolette. Incollare il documento in un validatore che colora le stringhe lo rende evidente in un secondo.
- Come evito che succeda?
- Non costruire mai JSON concatenando stringhe. Costruisci un dict e chiama json.dumps, che per costruzione esegue l’escape corretto di ogni valore.
Risolvilo adesso
Incolla il payload nello strumento qui sopra, oppure vai direttamente a quello creato per questo compito.
Evidenzia le stringhe