Naar de inhoud

JSON naar Zod Schema Transformer — Numio

Genereert een Zod-schema op basis van een JSON-voorbeeld met de json-to-zod-bibliotheek. Elke waarde wordt toegewezen aan z.string(), z.number(), z.boolean(), z.null() of genest z.object(); lege arrays worden z.array(z.unknown()).

Een runtime-validator opstellen voor een API-antwoord waarvan u slechts een voorbeeld heeft.

JSON

Zod Schema

Wanneer gebruik je dit?

  • Een runtime-validator opstellen voor een API-antwoord waarvan u slechts een voorbeeld heeft.
  • Zod-validatie toevoegen aan een formulier- of configuratielader zonder het schema met de hand te schrijven.

Hoe werkt het

  1. Plak een representatief JSON-voorbeeld in de linkereditor.
  2. Open de instellingen en stel de Root Schema Name in als u iets anders dan het schema wilt.
  3. Kopieer de code en scherp deze aan: voeg .optioneel(), .email(), .min() en vergelijkbare regels toe vanuit uw echte specificaties.

JSON-voorbeeld

{
  "id": 42,
  "email": "ada@example.com",
  "roles": ["admin", "editor"],
  "profile": { "nickname": null, "verified": true },
  "tags": []
}

Zod-schema (TypeScript)

import { z } from "zod"

export const schema = z.object({
  id: z.number(),
  email: z.string(),
  roles: z.array(z.string()),
  profile: z.object({ nickname: z.null(), verified: z.boolean() }),
  tags: z.array(z.unknown()),
})

Details en beperkingen

Generatie draait in de browser; de bibliotheek wordt op aanvraag geladen.

Typen komen uit één monster. null wordt alleen z.null() en niet .nullable(), en ontbrekende sleutels worden nooit als optioneel gemarkeerd.

Arrays met verschillende elementvormen worden z.union([...]) van elke vorm, wat mogelijk handmatig moet worden samengevoegd.

Formaten zoals e-mail, datum of UUID worden niet gedetecteerd; ze zijn allemaal z.string().

FAQ

Kan ik een JSON-array in de root converteren?

Ja. Een rootarray wordt z.array(...). Als de objecten verschillende sleutels hebben, wordt elk afzonderlijk object lid van een z.union.

Hoe worden nulwaarden getypt?

Zoals z.null(), dat alleen null accepteert. Als het veld ook een string kan bevatten, wijzig dit dan in z.string().nullable().

Voegt het .optioneel() toe voor ontbrekende velden?

Nee. Elke sleutel in het voorbeeld is vereist. Markeer zelf optionele velden.

Specificaties en referenties