Che cosa fa questo strumento
Un campione JSON diventa uno JSON Schema in draft 2020-12.
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"address": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
},
"required": ["id", "name", "address"]
}
Gli oggetti annidati sono scritti sul posto. Nessuna sezione $defs, nessun $ref: per un campione, uno schema in linea è quello che si legge dall’alto in basso.
Due impostazioni, perché entrambe le risposte si difendono
- Chiavi obbligatorie. Attiva per default: ogni chiave del campione è elencata. Disattiva: nessun array
required, e un documento privo di una chiave valida lo stesso. additionalProperties. Permissivo per default: una chiave in più passa. In stretto,"additionalProperties": falseè aggiunto a ogni oggetto e una chiave inattesa è un errore.
Nessuna delle due scelte si legge in un campione. Sono affermazioni sulla tua API: spettano a te, invece di essere indovinate qui.
integer e number vengono dal letterale
3 dà integer; 3.0 e 1e3 danno number. JSON ha un solo tipo numerico: il modo in cui un numero è scritto è l’unica traccia di ciò che l’ha prodotto. Uno schema che chiama intero 10.0 rifiuta 10.5, con ogni probabilità il record successivo — è esattamente ciò che questo strumento faceva finché il difetto non è stato trovato e corretto scrivendo queste pagine.
Ciò che il campione non descrive
"n": nulldà{"type": "null"}, uno schema che non accetta altro. Se il campo è una stringa annullabile, la modifica è{"type": ["string", "null"]}.- Un array vuoto dà
{"type": "array"}senzaitems: non si afferma nulla su elementi mai visti. - Un array eterogeneo dà
anyOf, elencando esattamente le forme presenti. - Né
format, néminLength, népattern. Un’email, un UUID e una frase sono qui tutti"type": "string". Aggiungere"format": "email"sarebbe indovinare un significato, non leggere una struttura — ed è la prima cosa da aggiungere a mano quando conosci il campo.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.