DevToolPal
IT

Validatore JSON Schema

Valida dati JSON con un JSON Schema (2020-12, 2019-09, draft-07 o draft-04) e visualizza ogni errore con il suo percorso.

Eseguito in locale, mai caricato

Opzioni

Dati JSON

JSON Schema

Risultato della validazione

Il risultato apparirà qui

Cosa fa

JSON Schema è un vocabolario per descrivere la forma dei dati JSON: quali proprietà deve avere un oggetto, di che tipo è ogni valore, intervalli e pattern ammessi, lunghezza degli array e molto altro. Le API lo usano nelle specifiche OpenAPI, gli editor per l’autocompletamento dei file di configurazione e i back end per rifiutare richieste errate.

Questo validatore controlla un documento JSON rispetto a uno schema ed elenca ogni problema trovato. Ogni errore mostra dove si trova nei dati (un JSON Pointer come /tags/1), un messaggio leggibile e la parola chiave dello schema che non è stata soddisfatta, così puoi correggere rapidamente i dati o lo schema. Supporta draft 2020-12, 2019-09, draft-07 e draft-04, inclusi $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties e il controllo dei formati.

Come si usa

  1. Incolla i dati in Dati JSON e lo schema in JSON Schema, oppure carica un file per ciascun lato. Esempio carica un record utente con alcuni errori voluti.
  2. Il risultato si aggiorna mentre scrivi: un badge verde se i dati sono validi, altrimenti il numero di errori e il loro elenco.
  3. Lascia Versione su Automatica per seguire $schema, oppure imponi una versione. Disattiva Mostra tutti gli errori per fermarti al primo.
  4. Copia errori copia l’elenco come testo semplice, per una segnalazione di bug o una code review.

Se uno dei due lati non è JSON valido, il messaggio indica se il problema è nei dati o nello schema e riporta riga e colonna.

Esempio

Con questo schema:

{
  "type": "object",
  "required": ["id"],
  "properties": {
    "id": { "type": "integer" },
    "age": { "type": "integer", "minimum": 0 }
  }
}

il documento {"age": -1} produce due errori: alla (radice) manca la proprietà obbligatoria id; in /age il valore è inferiore al minimo di 0.

Suggerimenti

Aggiungi "additionalProperties": false per individuare nomi di proprietà scritti male, che altrimenti passano inosservati. Usa enum o const per i valori fissi e pattern per stringhe come i codici prodotto. Quando lo schema cresce, sposta le parti ripetute in $defs e richiamale con $ref.

Domande frequenti

› Quali versioni di JSON Schema sono supportate?

Draft 2020-12, 2019-09, draft-07 (che copre anche draft-06) e draft-04. Con Versione su Automatica, la versione viene letta dalla parola chiave $schema; gli schemi senza $schema sono trattati come 2020-12.

› Cosa indicano i percorsi degli errori?

Il primo percorso è un JSON Pointer al valore dei tuoi dati che non è valido, come /items/2/price; (radice) indica l’intero documento. La riga grigia mostra la parola chiave fallita e la sua posizione nello schema, come minimum · #/properties/age/minimum.

› Vengono controllati formati come email e date-time?

Sì. Sono validati i formati comuni: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer e altri. I formati sconosciuti vengono ignorati, come consente la specifica.

› Lo schema può fare riferimento ad altri file?

I riferimenti interni allo stesso schema funzionano, per esempio un $ref a #/$defs/address. Gli URL esterni non vengono scaricati, perché nulla lascia il browser; incolla le definizioni referenziate in $defs.