Validatore JSON Schema
Valida un documento JSON rispetto a un JSON Schema nel browser. Ogni errore è elencato con percorso nell'istanza, parola chiave e percorso nello schema.
| # | Percorso nell'istanza | Parola chiave | Messaggio | Percorso nello schema |
|---|
Come validare un JSON rispetto a uno schema
- Incolla il tuo schema in JSON Schema e i tuoi dati in Documento JSON, oppure scegli un caso già pronto da Esempio.
- Lascia Draft su Automatico ($schema) per usare la versione indicata dal
$schemadello schema, oppure forza il draft 4, 7, 2019-09 o 2020-12. - La validazione parte mentre scrivi; Valida la rilancia. Formatta entrambi reindenta i due testi.
- Leggi il risultato: una riga verde quando il documento è valido, altrimenti una tabella di errori.
Leggere la tabella degli errori
Ogni riga è una regola non rispettata:
- Percorso nell’istanza è un JSON Pointer verso il valore che ha fallito.
/roles/1è il secondo elemento diroles;(radice)è l’intero documento. - Parola chiave è la regola dello schema che ha fallito:
type,required,minimum,pattern,format,additionalPropertiese così via. - Messaggio spiega il problema, per esempio
0 is less than 1.I messaggi del validatore sono in inglese, ma percorsi e parole chiave bastano di solito a capire subito cosa correggere. - Percorso nello schema punta alla parola chiave dentro lo schema, come
/properties/id/minimum, così trovi in fretta la regola.
La validazione non si ferma al primo problema: vengono elencati tutti gli errori. Quando una proprietà di un oggetto fallisce, il validatore segnala un riepilogo (“Property “id” does not match schema”) seguito dal motivo preciso. Mostra solo gli errori più specifici nasconde questi riepiloghi; togli la spunta per vedere la catena completa. Gli errori sotto anyOf e oneOf restano sempre insieme agli errori specifici di ogni ramo, perché hanno senso solo insieme.
Cosa è supportato
- Draft: 4, 6 (validato con le regole del draft 7), 7, 2019-09 e 2020-12, compresi
$defs/definitions,$reflocali,if/then/else,dependentRequired,dependentSchemas,prefixItems,unevaluatedPropertieseunevaluatedItems. - Formati: vengono controllati
date,time,date-time,duration,email,hostname,ipv4,ipv6,uri,uri-reference,uri-template,uuid,regex,json-pointererelative-json-pointer. I formati sconosciuti vengono ignorati, come permette la specifica. - Riferimenti:
$refpuò puntare ovunque dentro lo schema, anche a un$idche vi è dichiarato. Gli schemi remoti non vengono mai scaricati; un riferimento a un altro URL viene segnalato come non risolto.
Questo strumento valida i documenti rispetto al tuo schema. Non controlla che lo schema stesso rispetti il meta-schema, ma ti avvisa dei nomi di type sconosciuti come "strin" o "int", un refuso frequente che i validatori altrimenti ignorano in silenzio.
Gli esempi
- Profilo utente (2020-12):
required, lunghezze delle stringhe,format: email, unenumdentroitems,uniqueItemseadditionalProperties: false. - Elenco prodotti con $ref (draft-07): un array i cui elementi fanno riferimento a
#/definitions/product, con unpatternper lo SKU e un prezzo conexclusiveMinimum. - Configurazione con if/then (2019-09): un certificato richiesto solo in modalità HTTPS, un
oneOftra email e URI e dei limiti numerici.
Ogni esempio è accompagnato da un documento con errori voluti, così vedi come appaiono gli errori.
Domande frequenti
I miei dati vengono caricati?
No. Lo schema e il documento vengono validati nel tuo browser; nulla viene inviato a un server.
Perché il $ref del mio schema è "non risolto"?
Il validatore conosce solo lo schema che hai incollato. Un $ref verso un altro file o URL non può essere seguito; copia le definizioni a cui fa riferimento in $defs e punta invece a #/$defs/….
Quale draft dovrei usare?
Quello previsto dal tuo progetto, dichiarato con $schema. Per i nuovi schemi, 2020-12 è la versione attuale; la usa anche OpenAPI 3.1.
Perché integer rifiuta 2.0?
Non lo rifiuta: JSON Schema considera 2.0 un intero perché il suo valore è intero. È 2.5 a non rispettare "type": "integer".
Perché i messaggi di errore sono in inglese?
Vengono direttamente dalla libreria di validazione, che li produce in inglese. Le colonne Percorso nell’istanza, Parola chiave e Percorso nello schema indicano comunque con precisione dove si trova il problema.
Funziona offline?
Sì. Una volta caricata la pagina ed eseguita una prima validazione (che carica il validatore), non serve più la connessione.
Strumenti correlati
- Formattatore e validatore JSON Formattatore e validatore JSON gratuito che formatta, minifica e controlla il JSON nel browser, con gli errori di sintassi indicati per riga e colonna.
- Tester JSONPath Prova espressioni JSONPath sul tuo JSON nel browser. Filtri, slice, discesa ricorsiva, percorsi e JSON Pointer, con esempi pronti all'uso.
- Convertitore da JSON a YAML Converti JSON in YAML e YAML in JSON nel browser, con supporto di anchor, merge key e file con più documenti. Nulla viene caricato.