Da JSON a JSON Schema
JSON to JSON Schema
Deduce un JSON Schema da uno o più esempi, unendo le forme che incontra.
Descrive un documento di esempio come uno JSON Schema (2020-12): tipi, proprietà, `required` e `$defs` annidati per le forme ripetute. Utile per un test di contratto, per un componente OpenAPI o ovunque un validatore voglia uno schema anziché un esempio.
JSON di esempio
Trascina un file .json
Letto in questa scheda. Non viene caricato niente.
Dagli tutti gli elementi che hai. Ogni record in più restringe la deduzione: un campo che manca in uno di loro è proprio quello che lo rende facoltativo.
TypeScript
Come si usa
Incollare tutti i record che si hanno
Viene letto e fuso ogni elemento di ogni array, non solo il primo. Tre record dicono molto più di uno, perché un campo che manca in uno di essi è esattamente ciò che rende quel campo facoltativo.
Dare un nome al tipo radice
Gli oggetti annidati prendono il nome dalla chiave che li contiene, al singolare per gli array, così `users` produce un `User`. Solo la radice ha bisogno di un nome dato a mano.
Leggere i conteggi sotto l’uscita
Tipi, campi facoltativi, unioni e quanti record sono stati fusi. Un conteggio di unioni sopra lo zero vuol dire che nel campione un campo ha contenuto due generi di valore diversi — vale la pena guardarlo prima di incollare il risultato in una base di codice.
Portare lo schema a un validatore
L’uscita porta con sé la sua parola chiave `$schema`, quindi può andare dritta nel validatore JSON Schema di questo sito o in qualunque implementazione 2020-12.
Domande frequenti
Di quale draft si tratta?
Del Draft 2020-12, dichiarato nella parola chiave `$schema`. Le forme riusabili vanno in `$defs` e si richiamano con `$ref`, che è la scrittura di quel draft; gli strumenti per il Draft-07 vogliono invece `definitions` e non risolveranno questi riferimenti.
Perché niente è vincolato oltre al suo tipo?
Non viene emesso nessun `format`, `minLength`, `pattern` o `enum`. Ognuno di questi sarebbe dedotto da una manciata di record, e uno schema che rifiuta dati di produzione validi è peggio di uno semplicemente largo. Vanno aggiunti i vincoli che si possono davvero giustificare.
`additionalProperties` viene impostato?
Viene lasciato aperto, il che vuol dire che le chiavi in più passano la convalida. Chiuderlo trasformerebbe ogni campo che l’API aggiunge in seguito in un errore di convalida, e un campione non può dire se la forma sia pensata per essere chiusa.
Come decide che cosa va in `required`?
Una proprietà è obbligatoria quando era presente in ogni record fuso in quella forma. Se si incolla un record è obbligatorio tutto; se se ne incollano cinque, lo schema comincia a dire qualcosa di vero.
Può ricevere da
Da JSON a TypeScript
JSON to TypeScript
Deduce interfacce o tipi TypeScript da un esempio JSON, unendo i campi facoltativi e le unioni.
Da JSON a schema Zod
JSON to Zod Schema
Costruisce uno schema Zod da un esempio JSON, deducendo nullable, optional ed enumerazioni.
Validatore di JSON Schema
JSON Schema Validator
Valida un documento rispetto a un JSON Schema e riporta ogni errore con il percorso dell’istanza.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Dopo
Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.
Validatore di JSON Schema
JSON Schema Validator
Valida un documento rispetto a un JSON Schema e riporta ogni errore con il percorso dell’istanza.
Da JSON a TypeScript
JSON to TypeScript
Deduce interfacce o tipi TypeScript da un esempio JSON, unendo i campi facoltativi e le unioni.
Da JSON a schema Zod
JSON to Zod Schema
Costruisce uno schema Zod da un esempio JSON, deducendo nullable, optional ed enumerazioni.
Controllo di qualità di un OpenAPI
OpenAPI Linter
Controlla in un documento OpenAPI le risposte mancanti, gli schemi inutilizzati, i riferimenti che non puntano a niente e gli altri difetti che rompono i generatori di codice.
Conversione JSON ⇄ CSV
JSON ⇄ CSV
Appiattisce il JSON annidato in colonne o ricostruisce gli oggetti da una tabella, con i nomi di colonna a percorso puntato.
Confronto fra due JSON
JSON Diff
Confronta due documenti JSON per struttura, ignorando l’ordine delle chiavi e riportando i percorsi aggiunti, tolti e cambiati.