Validare JSON con uno schema
Scopra se un record rispetta le regole che deve seguire: nell'esempio Ada, 37 anni, con le etichette math e code rispetta ogni regola, quindi l'elenco dei problemi torna vuoto. Quando qualcosa non va, riceve tutti i problemi in una sola volta. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
Un identificatore assente, una proprietà inattesa, una stringa troppo corta o un numero fuori intervallo possono interrompere un’importazione molto dopo il parsing.
Scritto bene non vuol dire corretto
I dati possono leggersi alla perfezione ed essere comunque sbagliati per il sistema che li riceve. Un identificativo mancante, una voce inattesa, un testo troppo corto o un numero fuori dal suo intervallo possono bloccare un'importazione molto dopo che i dati sono stati letti senza problemi. La lettura verifica soltanto la punteggiatura. Il contratto è il luogo delle aspettative reali: quali voci devono esserci, che tipo di valore contiene ciascuna, quali limiti valgono e se è ammesso altro. Questo strumento confronta i dati con quel contratto ed elenca tutte le violazioni trovate, senza fermarsi alla prima.
Come leggere il risultato e sfruttarlo
Un elenco di problemi vuoto significa che ogni regola è rispettata, come nell'esempio: Ada, 37 anni, con le etichette math e code, soddisfa un contratto che chiede un nome di almeno due lettere, un'età intera non inferiore a zero, etichette che non si ripetono e nessun'altra voce. Ogni problema indica dove si trova nei dati, quale regola ha violato e un messaggio leggibile. Usi il messaggio per le persone e la posizione e la regola per l'automazione: un modulo può evidenziare il controllo corrispondente e un'importazione può raggruppare gli errori ricorrenti prima che i record di un partner arrivino al suo database.
Verifichi il contratto, non solo la punteggiatura
Non sa che un ordine deve contenere un numero, che una quantità deve essere positiva o che un oggetto deve rifiutare campi sconosciuti. Il risultato contiene il verdetto booleano <code>valid</code> e l’array <code>violations</code>. Un array vuoto indica che il documento rispetta ogni vincolo valutato.
In caso di errore vengono mantenuti tutti i problemi, senza fermarsi al primo. Il validatore gestisce tipi, proprietà obbligatorie e dipendenti, proprietà aggiuntive, elementi di array, lunghezze, pattern, limiti numerici, costanti, enumerazioni, riferimenti locali e composizioni di schemi.
Legga i percorsi delle violazioni senza supposizioni
La stringa vuota indica la radice; <code>/customer/email</code> identifica l’e-mail in customer; <code>/lines/2/quantity</code> identifica quantity nel terzo elemento. Usi il messaggio per interfacce e log, ma percorso e parola chiave per la logica automatica. Un modulo può collegare il problema al controllo corretto e una pipeline può raggruppare gli errori ricorrenti.
Casi d'uso
Proteggere le importazioni dati
Convalidi i record dei partner prima del caricamento, bloccando campi assenti e strutture inattese.
Domande frequenti
Che cosa restituisce una convalida riuscita?
Restituisce valid impostato su true e un array violations vuoto.
Il controllo si ferma al primo problema?
No. Tutti i problemi trovati vengono conservati e riportati insieme, il che conta per moduli, importazioni in blocco e revisioni di configurazioni, dove correggere un errore per volta fa perdere tempo. Un elenco vuoto significa che ogni regola è rispettata.
Come si legge la posizione indicata per ogni problema?
Una posizione vuota indica l'intero documento. Una posizione come /customer/email indica l'email dentro customer, e /lines/2/quantity indica la quantità del terzo elemento di lines, perché le posizioni si contano da zero.
Che tipo di regole può esprimere il contratto?
Il tipo di ogni valore, quali voci sono obbligatorie o dipendono da altre, se sono ammesse voci inattese, lunghezza e modello dei testi, limiti dei numeri, valori fissi ed elenchi di valori ammessi, regole per gli elementi di una lista e combinazioni di più regole.
Perché dati che si leggono senza errori possono non superare il controllo?
Perché la lettura conferma solo che graffe, virgolette e virgole sono in ordine. Non sa che un ordine deve avere un numero, che una quantità deve essere positiva o che le voci sconosciute vanno rifiutate: queste aspettative stanno nel contratto.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/data/json-schema-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"document":{"name":"Ada","age":37},"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}}'const res = await fetch("https://api.kit.forhosting.com/data/json-schema-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"document": {
"name": "Ada",
"age": 37
},
"schema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/json-schema-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"document": {
"name": "Ada",
"age": 37
},
"schema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/json-schema-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"document":{"name":"Ada","age":37},"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"document":{"name":"Ada","age":37},"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/json-schema-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"document": {
"name": "Ada",
"age": 37
},
"schema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.json_schema_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Un JSON può essere formalmente perfetto e risultare comunque errato per il sistema che lo riceve. Questo validatore confronta un documento JSON con un JSON Schema e restituisce tutte le violazioni rilevate in una sola risposta. Ogni problema include il percorso nel documento, il percorso nello schema, la parola chiave e una spiegazione leggibile, così Lei può individuare subito il campo da correggere.
Convalidi il contratto, non soltanto la sintassi JSON
Un parser JSON stabilisce solo se parentesi, virgolette, virgole e valori formano JSON valido. JSON Schema descrive queste aspettative come contratto leggibile dalla macchina. Inserisca il documento in <code>document</code> e il contratto in <code>schema</code>.
Legga i percorsi delle violazioni senza supposizioni
Ogni violazione include un <code>path</code> espresso come JSON Pointer. L’escaping Pointer rende inequivocabili anche proprietà con barra o tilde. <code>schema_path</code> rimanda alla regola responsabile, mentre <code>keyword</code> offre una categoria stabile come <code>required</code>, <code>type</code> o <code>minimum</code>. L’ordine di visita deterministico assicura lo stesso output per lo stesso documento e schema.
Distingua uno schema malformato da dati non validi
Un documento non valido produce un risultato normale: la richiesta termina con <code>valid</code> su false e descrive tutte le violazioni. Un contratto rotto non viene quindi scambiato per dati difettosi. Uno schema malformato è diverso, perché impedisce una verifica affidabile. Se una parola chiave ha forma errata, un tipo è sconosciuto, un’espressione regolare non compila, un limite numerico è insensato o un riferimento locale non si risolve, la capacità restituisce <code>invalid_input</code>. L’implementazione pura non usa la rete e non recupera riferimenti remoti; utilizzi riferimenti JSON Pointer locali che iniziano con <code>#/</code>. È adatta ai confini API, prima degli import, per output strutturati e nelle pipeline di build. Le richieste API partono da $0.002; la stessa logica funziona nel browser.
Casi di integrazione
Rifiutare payload API errati
Controlli i corpi delle richieste e restituisca percorsi precisi per ogni campo che i client devono correggere.
Verificare JSON generato
Controlli output strutturati rispetto a tipi, intervalli e proprietà richieste prima che un altro sistema agisca.
Domande tecniche
La verifica si ferma al primo problema?
No. Riporta ogni violazione con percorso del documento, percorso dello schema, parola chiave e messaggio.
Che cosa accade se lo schema è malformato?
La richiesta fallisce con invalid_input, perché un contratto errato non consente una verifica affidabile.
Sono supportati riferimenti remoti allo schema?
No. Il validatore non usa la rete e supporta riferimenti JSON Pointer locali nello schema fornito.
Quanto costa una convalida tramite API?
Ogni richiesta parte da $0.002. L’esecutore nel browser usa la stessa logica pura per i controlli interattivi.