Validatore e generatore di JSON Schema
Valida JSON contro uno schema, o deduci uno schema da dati di esempio
Su questo strumento
Due direzioni della stessa disciplina: incolla JSON di esempio e ottieni uno schema draft-07 dedotto da esso, oppure incolla dati più schema e vedi ogni violazione elencata con il suo percorso JSON. La validazione gira su Ajv — lo stesso motore usato dalla maggior parte dei servizi Node — quindi ciò che passa qui passa anche in CI.
L’inferenza è pensata per la produzione: le chiavi degli oggetti diventano proprietà tipizzate e voci required, gli array fondono le forme di tutti i loro membri, gli interi sono distinti dai float e le chiavi presenti solo in alcuni membri di un array sono correttamente lasciate fuori da required. Il risultato è un punto di partenza da irrigidire con formati, intervalli e pattern.
Risposte API e file di configurazione sono esattamente i dati che meno vorresti su un server di terzi. Sia l’inferenza sia la validazione girano interamente nel tuo browser.
Domande frequenti
- Quale draft di JSON Schema è supportato?
- L’inferenza emette draft-07, il draft più ampiamente supportato tra editor e validatori. La validazione accetta draft-07 e i draft precedenti che Ajv capisce in modalità non-strict; anche le keyword 2019-09/2020-12 per lo più funzionano, dato che le keyword sconosciute vengono ignorate invece di essere fatali.
- Cosa significa il $ nei percorsi delle violazioni?
- È la radice del documento, in stile JSONPath: $.age indica la proprietà age al livello superiore, $.items.2.name il name del terzo elemento dell’array. Un percorso vuoto ($) significa che la violazione riguarda la radice stessa del documento — tipo sbagliato, o una proprietà required mancante.
- Perché lo schema dedotto è più severo o più permissivo di quanto mi aspettassi?
- Descrive esattamente il campione che gli hai dato: i campi presenti ovunque diventano required e sono ammessi solo i tipi osservati. Dagli un campione più vario (un array di oggetti rappresentativi) per uno schema più generale, poi aggiusta a mano — l’inferenza non può conoscere le intenzioni.
- La validazione supporta format, pattern e le altre keyword di vincolo?
- Le keyword strutturali (type, required, properties, items, enum, minimum, pattern…) sono applicate pienamente. Le stringhe di format come "email" o "date-time" non vengono verificate — rispecchia la specifica JSON Schema, dove format è annotativo di default, ed evita false sicurezze.