Przejdź do treści

Konwerter JSON na schemat Zod — Numio

Generuje schemat Zod na podstawie próbki JSON z biblioteką json-to-zod. Każda wartość jest odwzorowana na z.string(), z.number(), z.boolean(), z.null() lub zagnieżdżoną z.object(); puste tablice stają się z.array(z.unknown()).

Opracowanie walidatora wykonawczego dla odpowiedzi API, której masz tylko przykład.

JSON

Zod Schema

Kiedy go używać

  • Opracowanie walidatora wykonawczego dla odpowiedzi API, której masz tylko przykład.
  • Dodanie walidacji Zoda do modułu ładującego formularze lub konfigurację bez ręcznego pisania schematu.

Jak używać

  1. Wklej reprezentatywną próbkę JSON do lewego edytora.
  2. Otwórz ustawienia i zmień nazwę schematu głównego, jeśli chcesz użyć innej niż schema.
  3. Skopiuj kod, a następnie dokręć go: dodaj .opcjonalne(), .email(), .min() i podobne reguły ze swojej prawdziwej specyfikacji.

Próbka JSON

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

Schemat Zoda (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()),
})

Szczegóły i ograniczenia

Generowanie działa w przeglądarce; biblioteka jest ładowana na żądanie.

Typy pochodzą z jednej próbki. null staje się tylko z.null(), a nie .nullable(), a brakujące klucze nigdy nie są oznaczane jako opcjonalne.

Tablice z różnymi kształtami elementów stają się z.union([...]) każdego kształtu, co może wymagać ręcznego scalania.

Nie są wykrywane formaty takie jak e-mail, data lub UUID; wszystkie są z.string().

FAQ

Czy mogę przekonwertować tablicę JSON w katalogu głównym?

Tak. Tablica główna staje się z.array(...). Jeśli jego obiekty mają różne klucze, każdy odrębny obiekt staje się członkiem z.union.

Jak wpisuje się wartości null?

Jako z.null(), która akceptuje tylko wartość null. Jeśli pole może również zawierać ciąg znaków, zmień go na z.string().nullable().

Czy dodaje .opcjonalne() dla brakujących pól?

Nie. Wymagany jest każdy klucz z próbki. Sam zaznacz pola opcjonalne.

Specyfikacje i referencje