UTILS.
%100 tarayıcıda
🛡️

JSON'dan Zod Şemasına

Örnek bir JSON değeri yapıştırın; bir Zod şeması ve çıkarımlı bir TypeScript tipi üretin; böylece tek bir şekil çalışma zamanında ve tipler derleme zamanında doğrulanır.

çıktı

Bu araç hakkında

JSON'dan Zod Şemasına aracı, yapıştırdığınız bir JSON örneğini kullanıma hazır bir Zod şemasına ve eşleşen TypeScript tipine dönüştürür. Zod, baskın TypeScript doğrulama kütüphanesidir ve gerçek API yükleri için z.object ağaçlarını elle yazmak yavaş ve hataya açıktır. Bu dönüştürücü JSON'unuzu JSON.parse ile ayrıştırır, değeri özyinelemeli olarak dolaşır ve deyimsel Zod üretir: dizeler z.string() olur, tam sayılar z.number().int(), diğer sayılar z.number(), boole değerleri z.boolean(), null z.null() ve iç içe nesneler kendi adlandırılmış z.object({...}) şemaları olur.

Her şey tarayıcınızda yerel olarak çalışır — JSON'unuz sayfa içinde ayrıştırılır ve asla yüklenmez, böylece hassas yükler cihazınızda kalır. Diziler, her öğeyi derinlemesine birleştirerek öğe tipini çıkarır; böylece anahtarları biraz farklı olan nesnelerden oluşan bir dizi, bazı öğelerde eksik olan anahtarların .optional() ile işaretlendiği tek bir şema üretir. ISO-8601 tarih-saat dizeleri tanınır ve z.string().datetime() olarak üretilir. Geçerli tanımlayıcı olmayan nesne anahtarları güvenli biçimde tırnaklanır.

Çıktı eksiksiz bir modüldür: her nesne şeması için dışa aktarılan bir const (çocuklar, onlara başvuran ebeveynlerden önce tanımlanır) ve ardından export type Root = z.infer<typeof Root>; böylece derleme zamanı tiplerini ücretsiz elde edersiniz. Üst düzey şemayı yeniden adlandırmak için kök adı kutusunu, eksik anahtarları .optional() (varsayılan) ya da .nullable() olarak ele almak için eksik anahtar geçişini kullanın. Sonucu kopyalayın veya .ts dosyası olarak indirin.

Sık sorulan sorular

JSON tipleri Zod'a nasıl eşlenir?
string z.string()'e, ISO tarih-saat dizesi z.string().datetime()'e, tam sayılar z.number().int()'e, diğer sayılar z.number()'e, boole değerleri z.boolean()'a, null z.null()'a, diziler z.array(...)'e ve nesneler adlandırılmış bir z.object({...})'e eşlenir. Boş diziler z.array(z.unknown()) olur.
İsteğe bağlı veya null olabilen alanlar nasıl işlenir?
Bir dizinin öğelerinde veya birleştirilmiş kardeşlerinde bir anahtar eksikse, o anahtar .optional() ile işaretlenir. null olarak görülen bir değer z.null() olur veya .nullable() ekler. Eksik anahtar geçişi, bazı örneklerde bulunmayan anahtarlar için .optional() (varsayılan) ya da .nullable() üretmenizi sağlar.
Bana bir TypeScript tipi de veriyor mu?
Evet. Şemadan sonra export type Root = z.infer<typeof Root> üretir; böylece çıkarımlı statik tip doğrudan şemanın kendisinden türetilir — hem çalışma zamanı doğrulaması hem de derleme zamanı tipleri için tek bir gerçek kaynağı.
JSON'um herhangi bir yere yükleniyor mu?
Hayır. Ayrıştırma ve kod üretimi tamamen tarayıcınızda JSON.parse ve düz JavaScript ile gerçekleşir. Hiçbir şey sunucuya gönderilmez, böylece özel API yanıtlarını güvenle yapıştırabilirsiniz.

Daha fazla araç