Uno schema generato da un documento campione descrive cosa c'era nel campione. E un punto di partenza, non una specifica imposta da qualche altra parte, e questo strumento e costruito trattandolo in quel modo invece di suggerire più certezza di quanto i dati supportino effettivamente.
Usare il generatore di JSON Schema
Incolla un documento, o un array di più record, scegli una bozza (2020-12 o Draft 07), se rilevare i formati delle stringhe, e se contrassegnare le chiavi obbligatorie, poi premi Genera schema.
Dato
[
{"id": 1, "name": "a", "score": 1},
{"id": 2, "name": "b", "score": 1.5}
]
entrambi i record portano id, name e score, quindi tutti e tre
appaiono in required. id e un numero intero in ogni record e diventa
"integer". score ha una frazione nel secondo record, 1.5, quindi il
suo tipo e il più ampio "number" invece di "integer", poiche contiene
effettivamente valori non interi.
Perche una chiave può silenziosamente uscire da required
Aggiungi un terzo record, {"id": 3, "name": "c"}, senza campo score,
e rigenera: score non è più obbligatorio, mentre id e name rimangono
obbligatori. Una chiave viene contrassegnata obbligatoria solo quando ogni
singolo record nell'array la porta. Un record che manca di un campo non
prova che il campo è opzionale in tutta la tua API, ma prova che lo schema
non può onestamente promettere che sarà sempre lì, quindi diventa opzionale.
Questa è la regola che la FAQ nella pagina dichiara direttamente, poiché è
il dettaglio che più probabilmente sorprenderà qualcuno che legge il
risultato.
Rilevamento del formato
Un formato delle stringhe come una data o un indirizzo email viene affermato solo quando ogni stringhe in quella posizione in ogni record corrisponde allo stesso pattern. Questo è ciò che impedisce a un valore fortunato di trasformare un campo genuinamente di testo libero in qualcosa che sembra un formato di data rigoroso, che rifiuterebbe poi dati reali e validi nel momento in cui vedrebbe un valore che non era effettivamente una data.
Cosa non può sapere
Il generatore ha solo i record che hai incollato. Non può vedere i record
che non hai incollato, quindi un campo che è sempre stato un numero positivo
nel tuo campione non tornerà con un minimum a meno che non ne aggiungi uno
tu stesso, e un campo tipo enum non diventerà una parola chiave enum a
meno che non la aggiungi. Tratta l'output come la forma che il tuo campione
prova, e allargala manualmente dove sai che i dati reali sono più rilassati.
Controllare il risultato
Incolla lo schema generato e un documento nel validatore JSON Schema per vedere se accetta effettivamente il tipo di documenti che ti aspetti.