Un validatore che dice solo “token imprevisto” ti ha detto dove ha rinunciato, non cosa hai fatto di solito. Sono spesso luoghi diversi. Una virgola mancante viene generalmente segnalata al token successivo, non alla virgola mancante stessa, e una parentesi non chiusa viene segnalata alla fine del file indipendentemente da quale riga l'ha aperta.
Cosa segnala il validatore JSON
Incolla un documento e premi Valida, o semplicemente smetti di digitare poiche
la validazione viene eseguita automaticamente. Il risultato nomina la
costruzione reale che e sbagliata: singoli apici, una chiave senza virgolette,
una virgola finale, una parola chiave con maiuscole/minuscole errate come
True o NULL, NaN o Infinity, uno zero iniziale, o una sequenza di
escape errata, ciascuna con la riga e colonna dove inizia.
Chiavi duplicate, di cui la maggior parte dei validatori non dice nulla
Una chiave duplicata e JSON legale. La specifica lo consente, e ogni parser che probabilmente utilizzi mantiene l'ultimo valore e scarta silenziosamente il precedente. Questo significa che i dati possono sparire da un documento che e perfettamente valido, senza alcun errore da nessuna parte. Incolla
{"region":"eu-west-1","retries":3,"region":"us-east-1"}
e il validatore lo segnala come JSON valido, una riga, e separatamente avverte:
Chiave duplicata “region”. L'ultimo valore vince, il precedente alla riga 1 viene scartato.
Questo e un avviso, non un errore, poiche la specifica lo consente davvero. Ma e il tipo di bug che e invisibile finche qualcosa a valle non legge il valore sbagliato, e la maggior parte degli strumenti non lo menziona mai.
Cosa conta come errore rispetto ad un avviso
Un errore significa che il documento non e JSON valido e nulla a valle dovrebbe provare a parolarlo: un problema di sintassi, un carattere illegale, un errore strutturale. Un avviso significa che il documento viene parolato, ma qualcosa in merito merita una seconda occhiata, come una chiave duplicata. La riga di stato in alto ti dice quale stai guardando, e gli errori contrassegnano la riga fallita nel marginale dell'editor perche tu possa trovarla senza scorrere.
Perche questo conta prima di commitare o distribuire
I file di configurazione, i dati di test delle API e i dati generati passano tutti attraverso un parser JSON eventualmente, generalmente in produzione, dove il messaggio di errore e quello che il parser predefinito del runtime ti fornisce. Catturare una virgola finale o una chiave duplicata qui, con un messaggio che nomina l'errore, e piu rapido che debuggare lo stesso problema dopo una distribuzione.