Validator di JSON Schema

Incolla uno schema e un documento, scegli la bozza e il validatore controlla il documento contro ogni parola chiave utilizzata dal tuo schema, type, required, enum, oneOf, $ref, if/then/else, format personalizzato, segnalando ogni violazione con un puntatore in stile JSONPath alla posizione esatta dell’errore.

Come validare contro uno schema

  1. 1

    Incolla lo schema

    Bozza JSON Schema 04, 07 o 2020-12. La parola chiave `$schema` (se presente) seleziona automaticamente la bozza.

  2. 2

    Incolla il documento

    Il JSON che desideri validare. Deve essere un JSON valido prima, gli errori di sintassi vengono mostrati prima della valutazione dello schema.

  3. 3

    Valida

    Ogni violazione viene segnalata con un puntatore JSON (`/user/email`) e la parola chiave che ha fallito (`format`, `required`, ecc.).

  4. 4

    Correggi e ri-valida

    Modifica uno dei due lati e lo stato si aggiorna in tempo reale.

Parole chiave supportate

Core: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.

Composizione: allOf, anyOf, oneOf, not.

Applicatori: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.

Condizionali: if, then, else, dependentSchemas.

Riferimenti: $ref, $defs, $id, $anchor.

Formati (con validazione quando abilitata): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

Uscita degli errori

FAIL  /user/email        format            "not-an-email" non è un "email" valido
FAIL  /user/age          minimum           -3 è inferiore al minimo 0
FAIL  /orders/0/total    type              "42" non è di tipo "number"
FAIL  /                  required          proprietà richiesta "shippingAddress" mancante

Ogni errore include il percorso e la parola chiave che ha fallito, rendendo veloce la localizzazione nel tuo editor.

Differenze tra le bozze che colpiscono

Parola chiave Bozza 04 Bozza 07 Bozza 2020-12
id vs $id id $id $id
exclusiveMaximum come bool Numero Numero
Sintassi dell’array items items items prefixItems
$ref consente fratelli No No

Imposta la bozza corretta; validare uno schema di bozza-04 come 2020-12 interpreterà male id e alcune altre sottigliezze.

Flussi di lavoro tipici

  • Test di contratto API: prima di un deploy, esegui lo schema OpenAPI generato/aggiornato contro risposte campione reali.
  • Rafforzamento della configurazione: valida ogni configurazione YAML/JSON in CI contro uno schema prima di unire.
  • Ingestione dei dati: rifiuta i payload che non corrispondono alla forma attesa in anticipo, con un chiaro messaggio di errore.

Errori comuni

  • Dimenticare l’applicazione di format. Per impostazione predefinita, la maggior parte dei validatori tratta i formati sconosciuti come solo annotazioni. Abilita la validazione di formato rigorosa per rifiutare effettivamente email e date errate.
  • Uso eccessivo di oneOf. Se due rami di oneOf si sovrappongono, il documento fallirà (deve corrispondere esattamente a uno). Usa anyOf o schemi discriminatori.
  • Schemi rigidi con additionalProperties: false. Aggiungere un nuovo campo opzionale diventa una modifica di rottura. Omettilo a meno che tu non voglia davvero un oggetto chiuso.

Domande frequenti

Sì. Le bozze 2020-12, 07 e 04 sono tutte supportate. Il validatore legge la parola chiave $schema dal tuo documento per scegliere quella giusta, o torna al selettore nell’interfaccia.

I formati standard (email, date-time, uuid, ipv4, ecc.) vengono convalidati quando il formato rigoroso è abilitato. I formati personalizzati dichiarati nel tuo schema sono trattati come annotazioni a meno che tu non fornisca un regex con pattern.

I riferimenti interni (#/$defs/foo) vengono risolti automaticamente. I riferimenti HTTP esterni non vengono recuperati per impostazione predefinita, per motivi di sicurezza. Includi prima i tuoi riferimenti esterni, oppure usa uno strumento dedicato che supporta la risoluzione remota di $ref.

Sì. Sia lo schema che il documento rimangono locali. Il contenuto incollato non viene mai caricato, sicuro per contratti API interni e dati sensibili.

Strumenti correlati

Strumento disponibile in altre lingue