Validatore JSON Schema online: errori con percorso e motivo
Con questo validatore JSON Schema incolli uno schema e i dati JSON e vedi subito se combaciano. Se non è così, ogni errore compare con il percorso fino al valore che non ha superato il controllo e un motivo chiaro, per esempio $.users[0].email. Sono supportati draft-07, 2019-09 e 2020-12, e le due caselle restano sul tuo dispositivo.
Validatore JSON online: come si usa
- Incolla il tuo schema nella casella Schema JSON (mostra “Incolla qui il tuo schema JSON...”).
- Incolla i dati da controllare nella casella Dati JSON.
- Leggi il Risultato. Si aggiorna quando incolli, o circa 300 millisecondi dopo che smetti di scrivere: non c’è nessun pulsante da premere.
- Un Valido verde con “I dati JSON rispettano lo schema.” significa che i dati passano. Un “Non valido: 3 errori” rosso elenca ogni errore.
- Correggi i dati (o lo schema) e il risultato cambia mentre modifichi.
Finché le due caselle non sono compilate, il risultato dice “Incolla uno schema e i dati JSON per controllarli.” Se una casella contiene testo che non è JSON, compare un riquadro rosso JSON non valido con il motivo e “Riga X, colonna Y”, e il risultato ti dice quale casella correggere. Per sistemare prima un documento disordinato, “Formattatore JSON” mostra la stessa riga e colonna per il JSON rotto.
Come leggere gli errori: percorso e motivo
Ogni errore ha due parti: un percorso e un motivo. Il percorso parte da $, la radice dei tuoi dati, e segue i nomi delle proprietà con i punti e le posizioni degli array tra parentesi quadre, contando da 0. Esempio: lo schema richiede id come intero da 1 in su, email nel formato email e tags senza duplicati; i dati sono {"id":"7","email":"ana@","tags":["a","a"]}. Il risultato dice “Non valido: 3 errori”:
$.id: Deve essere un intero, ma è una stringa.$.email: Deve rispettare il formato “email”.$.tags: Gli elementi [0] e [1] sono identici, ma ogni elemento deve essere diverso.
Vengono elencati tutti gli errori, non solo il primo, così correggi un intero documento in un solo passaggio. Dopo 100 errori l’elenco finisce con una riga come “e altri 250 errori non mostrati”; il numero nel titolo resta esatto. Se manca una proprietà obbligatoria (required), l’errore compare al percorso dell’oggetto che dovrebbe contenerla, per esempio $.users[0]. Anche le parole chiave più rare (not, contains, propertyNames, dependentRequired e if/then/else) hanno un motivo chiaro.
Modalità rigorosa: additionalproperties false
Di default uno schema permette proprietà in più: dei dati con un campo nick che lo schema non cita mai passano comunque. Attiva Modalità rigorosa (“Fallisce se i dati hanno proprietà che lo schema non elenca.”) per scoprire refusi e avanzi. Con lo schema di sopra e i dati {"id":1,"email":"ana@example.com","nick":"x"}, con la modalità spenta il risultato è “Valido”, con la modalità accesa è “Non valido: 1 errore” a $: Proprietà inattesa “nick”.
Dietro l’interruttore lo strumento aggiunge unevaluatedProperties: false allo schema radice e a ogni schema di proprietà o di elemento che descrive un oggetto, anche attraverso $ref. Il testo nella casella non viene mai modificato.
- Uno schema che imposta già
additionalPropertiesounevaluatedPropertiesmantiene la sua scelta. - Un
{"type":"object"}libero, senzaproperties, resta aperto. - I rami di
allOf,anyOfeoneOfe le voci di$defsnon vengono bloccati da soli, così i rami fratelli possono dichiarare ciascuno le proprie proprietà.
Versioni di JSON Schema, $ref e formati
Lo strumento legge la riga "$schema" del tuo schema e controlla i dati con le regole corrispondenti: http://json-schema.org/draft-07/schema# viene trattato come draft-07, https://json-schema.org/draft/2019-09/schema come 2019-09 e https://json-schema.org/draft/2020-12/schema come 2020-12. Senza "$schema" vale 2020-12, oppure 2019-09 con sintassi più vecchia come un array in items. Draft-04, draft-06 o qualsiasi altro indirizzo non sono supportati, e il risultato indica quale indirizzo dichiara lo schema. Conta perché alcune parole chiave sono cambiate tra le versioni: prefixItems è del 2020-12 e definitions è diventato $defs nel 2019-09. Entrambe le scritture del percorso di riferimento funzionano: #/$defs/name e #/definitions/name.
$refviene seguito solo dentro lo stesso schema. Non si scarica nulla, quindi un riferimento remoto comehttps://example.com/address.jsonviene segnalato come un riferimento che lo schema non definisce. Incolla quello schema nel tuo$defse punta il$reflì.formatviene controllato, non ignorato: email, date, date-time, uri, uuid e gli altri formati comuni falliscono con “Deve rispettare il formato”.- Uno schema rotto mostra “Lo schema stesso non è valido” con i problemi e i percorsi che puntano dentro lo schema, per esempio
"type": "strng". I dati non vengono controllati finché lo schema non è corretto. Un pattern che non è un’espressione regolare valida mostra “Non è stato possibile usare lo schema”.
Limiti e privacy
- Ogni casella accetta fino a 5.000.000 di caratteri. Oltre, il risultato ti chiede di incollare una parte più piccola.
- Vengono elencati i primi 100 errori; il totale viene sempre contato.
- Solo JSON: YAML e interi file OpenAPI vanno prima convertiti. Lo strumento valida; non genera uno schema dai dati e non corregge i tuoi dati.
- I numeri vengono letti come in qualsiasi
JSON.parse: gli interi oltre 9.007.199.254.740.991 perdono precisione prima di essere controllati. - Il tuo schema e i tuoi dati vengono controllati nel tuo browser. Non viene caricato né salvato nulla.
Domande frequenti
Come si usa un validatore JSON online con uno schema?
Incolla lo schema nella casella “Schema JSON” e i dati da controllare in “Dati JSON”. Il risultato compare subito quando incolli, o circa 300 millisecondi dopo che smetti di scrivere. Un “Valido” verde significa che i dati combaciano; un “Non valido” rosso elenca ogni errore con percorso e motivo. Non c’è nessun pulsante da premere.
Quali versioni di JSON Schema sono supportate: draft-07, 2019-09 o 2020-12?
Tutte e tre. La versione viene dalla riga “$schema” del tuo schema. Uno schema senza “$schema” viene controllato come 2020-12, oppure come 2019-09 se usa sintassi più vecchia come un array in items. Gli schemi che dichiarano draft-04, draft-06 o un altro indirizzo $schema vengono segnalati come non supportati.
Che cosa significa un percorso come $.users[0].email?
È la posizione del valore che non ha superato il controllo. $ è la radice dei tuoi dati JSON, .users è la proprietà users, [0] è il primo elemento di quell’array (si conta da 0) e .email è la proprietà al suo interno. Un percorso come $.users[2].address.zip porta al valore nello stesso modo, un passo alla volta.
Che cosa significa l’errore di JSON Schema required e perché compare sull’oggetto padre?
Perché la proprietà non c’è e non resta nulla a cui puntare. L’errore appare al percorso dell’oggetto che dovrebbe contenerla, per esempio $.users[0], con il motivo “Manca la proprietà obbligatoria “email”.” Aggiungi la proprietà a quell’oggetto e l’errore sparisce.
Come faccio a far rifiutare allo schema le proprietà in più (additionalproperties false)?
Attiva “Modalità rigorosa”. Aggiunge unevaluatedProperties: false alla radice e a ogni schema di proprietà o di elemento che descrive un oggetto, così ogni proprietà che lo schema non elenca fallisce con “Proprietà inattesa”. Gli schemi che impostano già additionalProperties o unevaluatedProperties mantengono la loro scelta.
Controlla formati come email, date-time, uri e uuid?
Sì. La parola chiave “format” viene controllata, quindi un indirizzo come ana@ fallisce su una stringa con “format”: “email” e mostra “Deve rispettare il formato “email”.” I formati comuni sono coperti, tra cui email, date, date-time, time, uri, uuid, ipv4, ipv6 e hostname.
Può seguire un $ref verso un altro file o un URL?
Solo dentro lo stesso schema, come #/$defs/name o #/definitions/name. Non si scarica nulla, quindi un riferimento come https://example.com/address.json viene segnalato come un riferimento che lo schema non definisce. Copia lo schema referenziato nel tuo $defs e punta il $ref lì.
Che cosa significa “Lo schema stesso non è valido”?
Lo schema viola le regole di JSON Schema, per esempio con “type”: “strng” o un “minimum” scritto come testo. Il risultato elenca i problemi con percorsi che puntano dentro lo schema. I dati non vengono controllati finché lo schema non è corretto.
Questo JSON Schema validator online carica il mio schema o i miei dati?
No. Schema e dati vengono controllati interamente nel tuo browser. Non viene caricato né salvato nulla e non serve un account.
Consigliati
-
Supporto pieghevole per laptop Amazon BasicsPorta lo schermo all'altezza degli occhi mentre scorri una lunga lista di errori.
-
Monitor Ultrawide Samsung 34" ViewFinityLo schema a sinistra e la risposta a destra, senza saltare tra le schede.
-
Lavagna bianca magnetica da scrivania con pennarelliDisegna il contratto e i campi che falliscono prima di toccare il codice.
Aiuta a mantenere gratuiti gli strumenti. ✨
Le immagini sono solo a scopo illustrativo. In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei.