Skip to content

JSON'dan Zod Şema Dönüştürücü

JSON yapıştırın, anında kullanıma hazır bir Zod şeması alın, %100 tarayıcınızda. Doğru z.number().int(), .optional() ve .nullable(), ayrıca bir z.infer türü. Ücretsiz.

Takip Yok Tarayıcıda Çalışır Ücretsiz
Seçenekler
0 karakter
Zod Çıktı
0 satır
Çıktı, gerçek dünya API yükleri için Zod v3 ve v4 ayrıştırma semantiğine göre doğrulandı. — Go Tools Team · Jul 2, 2026

Zod şeması nedir?

Zod şeması, bir değerin biçiminin TypeScript öncelikli bir tanımıdır; verileri çalışma zamanında doğrular ve derleme zamanında statik bir tür çıkarsar. Bir JSON örneğinden bir tane oluşturmak, API yanıtları, formlar veya yapılandırma dosyaları için elle doğrulama tekrar kodu yazmadığınız anlamına gelir. Bu Zod şema oluşturucu doğru türleri çıkarsar, bulunmayan anahtarları .optional(), null değerleri .nullable() olarak işaretler ve size bir z.infer türü verir — hepsi %100 tarayıcınızda.

Örnekler

API yanıtı

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
import { z } from "zod";

export const RootSchema = z.object({
  id: z.number().int(),
  name: z.string(),
  email: z.string(),
  active: z.boolean(),
  roles: z.array(z.string()),
});

export type Root = z.infer<typeof RootSchema>;

Tipik bir REST yükü, kullanıma hazır bir Zod şemasına dönüşür. Tam sayılar z.number().int() olarak çıkarsanır ve roles dizisi z.array(z.string()) olur. Bir z.infer türü ücretsiz gelir.

İç içe nesne

{"repo":"zod","owner":{"login":"colinhacks","id":100}}
import { z } from "zod";

export const OwnerSchema = z.object({
  login: z.string(),
  id: z.number().int(),
});

export const RootSchema = z.object({
  repo: z.string(),
  owner: OwnerSchema,
});

export type Root = z.infer<typeof RootSchema>;

İç içe nesneler kendi adlandırılmış şemalarına (OwnerSchema) dönüşür ve alan üzerinden referans verilir. Alt şemalar, onları kullanan üst şemadan önce bildirilir ve aynı biçimler bir kez bildirilip yeniden kullanılır.

Nesne dizisi (isteğe bağlı alan)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
import { z } from "zod";

export const UserSchema = z.object({
  id: z.number().int(),
  nick: z.string().optional(),
});

export const RootSchema = z.object({
  users: z.array(UserSchema),
});

export type Root = z.infer<typeof RootSchema>;

Nesne dizileri tek bir öğe şemasında birleşir. Bazı öğelerde bulunmayan bir anahtar .optional() olur, böylece anahtar yokken de ayrıştırma başarılı olur.

Nullable alan ve sayı birleştirme

{"items":[{"sku":"A1","discount":0.1},{"sku":"A2","discount":null}]}
import { z } from "zod";

export const ItemSchema = z.object({
  sku: z.string(),
  discount: z.number().nullable(),
});

export const RootSchema = z.object({
  items: z.array(ItemSchema),
});

export type Root = z.infer<typeof RootSchema>;

Bazı örneklerde null olup diğerlerinde türlenmiş olan bir alan .nullable() olur. 0.1 bir ondalık nokta içerdiğinden, sayı z.number().int() yerine z.number() olarak birleşir.

JSON nasıl Zod'a dönüştürülür

  1. 1

    JSON'unuzu yapıştırın

    Giriş kutusuna bir JSON nesnesi, dizisi veya API yanıtı bırakın. Dönüştürme anında başlar.

  2. 2

    Çıktıyı ayarlayın

    Projenizin stiline uyması için kök şemayı yeniden adlandırın ve import satırını, z.infer türünü veya export anahtar sözcüğünü açıp kapatın.

  3. 3

    Kopyalayın veya indirin

    Oluşturulan Zod şemasını tek tıkla alın ve doğrudan doğrulama katmanınıza yapıştırın.

Common Use Cases

API yanıtlarını doğrulayın
Bir REST veya GraphQL yanıtı örneğini bir Zod şemasına dönüştürün ve fetch sınırında ayrıştırın, böylece bozuk veri uygulamanıza sızmak yerine net bir hatayla hızlıca başarısız olur.
Tür güvenli formlar ve girişler
Form veya sorgu girişi için bir şema oluşturun ve uçtan uca tür güvenliği için z.infer türünü kullanıcı arayüzünüz ve işleyicileriniz genelinde yeniden kullanın.
tRPC ve yapay zekâ araç şemaları
tRPC prosedürleri veya yapay zekâ yapılandırılmış çıktı araçları için giriş ve çıkış şemalarını elle yazmak yerine örnek bir yükten önyükleyin.

Dönüştürme nasıl çalışır

Yapısal çıkarım
Her nesne adlandırılmış bir şema olur; aynı biçimler bir kez bildirilip yeniden kullanılır. Nesne dizileri anahtar anahtar birleşir ve bazı öğelerde bulunmayan anahtarlar .optional() olur.
Doğru tür eşleme
Tam sayılar z.number().int()'e, ondalıklar z.number()'a eşlenir. Dizeler, boolean'lar ve null'lar z.string(), z.boolean() ve z.null()'a eşlenir; karışık ilkellerden oluşan bir dizi z.union() olur.
TypeScript türleri dahil
Kök şema için bir z.infer tür takma adı yayılır, böylece şema tek doğruluk kaynağı olarak kalır ve türleriniz doğrulamanızdan asla ayrışmaz.
%100 istemci tarafı
Ayrıştırma ve oluşturma, ağ çağrısı olmadan tarayıcınızda çalışır; böylece verileriniz gizli kalır.

Temiz Zod şemaları için ipuçları

Kök şemanızı adlandırın
Okunabilir, kendini belgeleyen kod için varsayılan Root yerine User veya ApiResponse gibi anlamlı bir kök adı belirleyin.
z.unknown() ve union'ları inceltin
Boş veya karışık diziler z.unknown() ya da geniş bir z.union() üretir. Aracın kesin türleri çıkarabilmesi için daha zengin, temsili bir örnek yapıştırın, sonra belirsiz kalan her şeyi sıkılaştırın.
Sınırda doğrulayın
Güvenilmeyen verilerin girdiği yerde safeParse() çağırın — API yanıtları, form girişi, webhook'lar — böylece kötü veri uygulama mantığınıza ulaşmadan yakalanır.

Sıkça Sorulan Sorular

JSON'u bir Zod şemasına nasıl dönüştürürüm?
JSON'unuzu soldaki kutuya yapıştırın. Dönüştürücü onu tarayıcınızda anında ayrıştırır ve sağda bir Zod şeması oluşturur, bir z.infer tür takma adıyla birlikte. Almak için Kopyala'ya tıklayın — yükleme yok, hesap yok, bekleme yok.
JSON'dan Zod ile JSON Schema'dan Zod arasındaki fark nedir?
Bu araç, örnek bir JSON değeri alır — bir API yanıtı veya nesne — ve biçiminden bir Zod şeması çıkarsar. JSON Schema'dan Zod farklı bir görevdir: mevcut bir JSON Schema belgesini Zod'a dönüştürür. Ham verileriniz varsa bu aracı kullanın. Zaten bir JSON Schema dosyanız varsa bunun yerine onu dönüştürün.
Şemadan bir TypeScript türünü nasıl alırım?
Her sonuç bir z.infer tür takma adı içerir, böylece elle yazmadan tümüyle türlenmiş bir Root elde edersiniz. Şemayı tek doğruluk kaynağı olarak tutun ve türü TypeScript'in türetmesine izin verin, böylece ikisi asla birbirinden ayrışmaz. Yalnızca şemayı istiyorsanız Seçenekler'den z.infer satırını kapatabilirsiniz.
İsteğe bağlı ve null alanlar nasıl işlenir?
Bir anahtar bazı dizi öğelerinde görünüp diğerlerinde görünmediğinde, alanı .optional() olarak işaretlenir. Bazı örneklerde null olup diğerlerinde türlenmiş olan bir alan .nullable() olur. Yalnızca ve her zaman null olan bir alan z.null() olur. Zod, optional ve nullable'ı bağımsız ele alır, böylece şema verilerinizin gerçekte nasıl değiştiğiyle eşleşir.
Hangi sayı türünü oluşturur?
Tam sayılar z.number().int()'e eşlenir; ondalık nokta veya üs içeren herhangi bir değer z.number()'a eşlenir. Bir alan örnekler arasında tam sayıları ve ondalıkları karıştırırsa, doğrulama asla geçerli bir değeri reddetmesin diye z.number()'a birleşir.
Çıktı Zod 3 ve Zod 4 ile çalışır mı?
Evet. Oluşturulan kod, Zod 3 ve Zod 4'te aynı davranan ortak, kararlı alt kümeyi kullanır — z.object, z.string, z.number, z.array, z.union, .int, .optional, .nullable ve z.infer. Yalnızca projenizde zod paketinin kurulu olduğundan emin olun.
Oluşturulan şemayla verileri nasıl doğrularım?
Şemayı içe aktarın ve geçersiz girişte hata fırlatmak için RootSchema.parse(data), ya da hata fırlatmadan türlenmiş bir başarı veya hata sonucu almak için RootSchema.safeParse(data) çağırın. Bu, API yanıtları, form girişi ve ortam yapılandırması gibi güven sınırlarında idealdir.
Diziler ve karışık türler nasıl işlenir?
Tek türlü bir dizi, o türün z.array'i olur. Bir nesne dizisi, anahtar anahtar tek bir öğe şemasında birleşir. İlkel türleri karıştıran bir dizi z.union olur ve daha belirsiz olan her şey z.unknown'a geri döner, böylece daha zengin bir örnekten onu inceltebilirsiniz.
JSON verilerim gizli ve güvende mi?
Evet. Dönüştürme %100 tarayıcınızda JavaScript kullanılarak gerçekleşir. JSON'unuz — token, kimlik veya müşteri verileri dahil — sayfadan asla ayrılmaz ve hiçbir sunucuya gönderilmez.
Araç ücretsiz mi? Hesap gerekiyor mu?
Tamamen ücretsizdir; kayıt yok, sınır yok ve çalışma alanını karmaşıklaştıran reklam yok.