Vai al contenuto

Da JSON a schema Zod

JSON to Zod Schema

Costruisce uno schema Zod da un esempio JSON, deducendo nullable, optional ed enumerazioni.

Trasforma un documento JSON di esempio in uno schema Zod — il controllo a runtime che i tipi di TypeScript non possono dare. L’uscita è un insieme di const `z.object` in ordine di dichiarazione più un tipo inferito per la radice, così un solo incolla dà sia il parser sia il tipo.

🔒 Funziona interamente nel tuo browserzodjsoncodegenvalidation
Produci

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

  1. 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.

  2. 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.

  3. 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.

  4. Incollarlo e usarlo per analizzare

    I blocchi vengono emessi prima i figli, il che in Zod conta: un `z.object` che si riferisce a una const dichiarata più avanti solleva un errore al momento dell’import invece di limitarsi a non passare il controllo dei tipi. L’ordine va lasciato com’è stato generato.

Domande frequenti

Perché lo schema non corrisponde al contratto della mia API?

Perché descrive il campione, non il contratto. Un campo marcato facoltativo era semplicemente assente da uno dei record incollati; un campo marcato obbligatorio può essere comunque facoltativo in un’API di cui non si è visto abbastanza. L’uscita va presa come una prima bozza da stringere a mano.

Ci sono raffinamenti — email, uuid, lunghezza minima?

Nessuno. Tutto è `z.string()`, `z.number()` o `z.boolean()`, con `.int()` quando ogni numero del campione era intero. Aggiungere `.email()` perché una stringa conteneva una @ sarebbe tirare a indovinare, e un raffinamento sbagliato rifiuta dati validi in produzione.

Che cosa succede a un array vuoto?

Diventa `z.array(z.unknown())`, perché un array vuoto non dice niente sul tipo dei suoi elementi. Basta incollare un record in cui l’array non è vuoto e lo schema si riempie da sé.

Per quale versione di Zod è?

Le chiamate emesse sono quelle uguali in Zod 3 e 4 — `z.object`, `z.array`, `z.union`, `.nullable()`, `.optional()` e `z.record(z.string(), z.unknown())` nella sua forma a due argomenti. Non viene usato niente di specifico di una versione.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.