Validare la sintassi di un JSON
- Dashboard
- Documentazione
- API
A cosa serve un validatore JSON?
Un validatore JSON ha un ruolo più modesto, ma più preciso, di un formattatore: non riscrive nulla. Prende una stringa e risponde a una domanda binaria: questo testo è JSON conforme alla RFC 8259? Se sì, lo strumento restituisce il controllo. Altrimenti, indica esattamente la riga, la colonna e un estratto del JSON intorno al problema, per aiutare lo sviluppatore a correggere immediatamente.
In pratica, è lo strumento che si usa appena un parser da qualche parte restituisce un messaggio di errore
criptico del tipo SyntaxError: Unexpected token } in JSON at position 217. Piuttosto che
contare i caratteri a mano in un editor, si incolla la stringa completa, si legge la posizione e si vede
l'estratto difettoso.
Validazione, formattazione: due operazioni distinte
Si confondono spesso. Il nostro formattatore JSON prende JSON valido e
lo riscrive con un'indentazione leggibile. Il validatore, invece, si accontenta di un verdetto sintattico. Non
effettua validazione semantica: non sa se il valore di un campo email
assomigli a un'email, né se la struttura corrisponda a uno schema JSON Schema. Per questo, si usano
strumenti dedicati (ajv in Node, justinrainbow/json-schema in PHP).
La sequenza classica in debug è: validare prima (lo strumento indica l'errore di sintassi), formattare dopo (il payload ormai valido diventa leggibile), confrontare infine con un altro payload di riferimento tramite il nostro comparatore JSON.
Gli errori JSON più frequenti
- Virgola finale (trailing comma):
{"a": 1, "b": 2,}. Tollerata da JavaScript, ECMAScript e JSON5; rifiutata da JSON puro. È l'errore n°1 quando si copia-incolla da un editor di codice. - Apostrofi invece di virgolette doppie:
{'a': 1}è invalido. JSON accetta solo virgolette doppie, intorno alle chiavi come ai valori stringa. - Chiavi non quotate:
{a: 1}, sintassi JavaScript valida ma JSON invalida. - Caratteri di controllo non escapati in una stringa: un a capo grezzo, una
tabulazione. JSON richiede
\n,\t,\r. - Commenti:
// commentoo/* */. Accettati in JSONC (config VS Code) o JSON5, rifiutati in JSON puro. - Encoding scorretto: un BOM UTF-8 all'inizio del file, contenuto in latin-1 mal convertito. Il validatore restituisce spesso un messaggio generico per questi casi.
- Struttura non terminata: una
{o[senza chiusura, frequente quando si tronca un payload al copia-incolla.
Come il validatore localizza l'errore
Lo strumento usa json_decode() di PHP con il flag JSON_THROW_ON_ERROR. PHP
restituisce un messaggio che contiene una posizione in byte (posizione 217), che convertiamo in
coppia riga/colonna contando i ritorni a capo prima dell'offset. Un estratto di circa 80 caratteri viene
poi ritagliato intorno alla posizione per dare contesto. È generalmente sufficiente per individuare
l'errore: una virgoletta mal posizionata, una virgola in più, una parentesi quadra mancante.
Attenzione: la posizione riportata da PHP non è sempre esattamente il carattere difettoso. È
spesso dopo l'errore, nel momento in cui il parser ha rinunciato. Se l'estratto mostra "name":
"Alice", }, l'errore reale è la virgola, non la graffa.
Casi d'uso tipici
- Configurazione corrotta:
composer.json,package.json,tsconfig.jsonche impediscono l'avvio di una build. Si incolla, si vede la riga, si corregge. - Risposta API troncata: un proxy ha tagliato il payload. La struttura non è terminata, il validatore lo segnala.
- Payload di webhook: un servizio terzo invia JSON mal formato. Il validatore permette di constatare il problema lato emettitore senza tuffarsi nel codice applicativo.
- JSON costruito per concatenazione: pratica da evitare ma comune, soprattutto in bash o in SQL. Il validatore rivela le virgolette doppie non escapate.
Limiti dello strumento
Il validatore non effettua validazione contro uno schema. Non dice che manca il campo
email, che il valore non è un intero o che l'array atteso non ha la lunghezza giusta.
Per queste verifiche strutturali, si usa JSON Schema. Il validatore non corregge nemmeno il
JSON: non tenta di aggiungere una graffa mancante, né di rimuovere una virgola in più. È una scelta:
la correzione automatica maschera troppo spesso errori reali.
Domande frequenti
Qual è la differenza con un linter?
Un linter va più lontano: verifica anche regole di stile (alfabetico, convenzioni di naming), rileva i valori duplicati, suggerisce miglioramenti. Il validatore resta sulla conformità sintattica.
Il mio JSON è valido, ma la mia applicazione lo rifiuta?
Verificate l'encoding (UTF-8 senza BOM), il limite di dimensione lato server, i tipi attesi. Un JSON sintatticamente corretto può comunque non corrispondere allo schema applicativo.
Il validatore conserva il mio JSON?
No. L'elaborazione è sincrona lato server, senza persistenza. Per dati molto sensibili,
preferite comunque una validazione locale tramite jq o uno script PHP.
Esempio di richiesta
curl -X POST https://cdrn.fr/api/v1/tools/json-validator/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Schema di input
| Campo | Tipo | Richiesto | Predefinito |
|---|---|---|---|
input |
text | ✓ | – |
Endpoint
GET https://cdrn.fr/api/v1/tools- elenca tutti gli strumenti disponibiliGET https://cdrn.fr/api/v1/tools/json-validator- recupera lo schema di questo strumentoPOST https://cdrn.fr/api/v1/tools/json-validator/execute- esegue questo strumento con un payload JSON