İçeriğe atla
%100 yerel

JSON Zod Şemasına

JSON örneğinden Zod doğrulama şeması ve TypeScript türleri oluşturun, biçim ve enum algılama ile.

Giriş
Çıkış

JSON Zod Şemasına

Bir JSON örneği yapıştırın — API yanıtı, yapılandırma dosyası, veritabanı satırı — ve TypeScript'te kullanıma hazır bir Zod şeması alın. Türler alan başına çıkarılır: ilkel türler z.string(), z.number() ve z.boolean() ile eşlenir, diziler çıkarılan element türüne sahiptir ve oluşumlar arasında farklılık gösteren bir değer z.union() olur. E-posta adresi, URL, UUID veya ISO tarihi gibi görünen bir dize, karşılık gelen doğrulayıcıyı alır — .email(), .url(), .uuid(), .date() veya .datetime() — basit bir z.string() yerine.

Ona aynı şekildeki nesnelerin bir dizisini verin — örneğin bir liste uç noktasından satırlar — ve oluşturucu, alanı yazmanız öncesinde her elemanı birleştirir: bazı satırlarda eksik olan bir anahtar .optional() olur, bazen boş olan bir anahtar seçtiğiniz ayara bağlı olarak .nullable() veya .optional() olur ve değerlerin küçük bir kümesini tekrarlayan bir alan — bir durum veya rol sütunu — açık bir dize yerine uygun bir z.enum() olur. "İç içe nesneleri bölün" öğesini açarak, bir derin iç içe değişmez yerine her iç içe nesneyi kendi adlandırılmış dışa aktarımına çekin; aynı şekiller otomatik olarak bir şemayı paylaşır. "Kesin nesneler" öğesini açarak, örneğin hiçbir zaman göstermediği herhangi bir anahtarı reddedin — yazım hatalarını ve akla gelmeyen API alanlarını ayrıştırma sırasında daha sonra değil, yakalamak için yararlıdır.

Dışa aktarılan şemayı kodunuzun beklediği şekilde adlandırın ve isteğe bağlı olarak doğrudan altına export type X = z.infer<typeof X> ekleyin; böylece çalışma zamanı doğrulayıcısı ve derleme zamanı türü aynı kaynaktan gelir ve hiçbir zaman sessizce uzaklaşamaz.

Her şey tarayıcınızda yerel olarak çalışır. Yapıştırdığınız JSON — belirteçleri içeren API yanıtları, kullanıcı kayıtları, dahili yüklemeler — tamamen cihazınızda ayrıştırılır ve yazılır, hiçbir yere yüklenmez. Bir örnek yapıştırın, oluşturulan şemayı projenize kopyalayın ve ayrıştırdığınız şeyi doğrulamaya başlayın.

FAQ

.optional() ve .nullable() arasında nasıl seçim yapıyor?
Dizi örneklerinin bazılarında eksik olan bir anahtar her zaman .optional()'dir — eksik bir anahtarı izin vermenin başka bir yolu yoktur. Mevcut ancak bazen boş olan bir anahtar belirsizdir, bu nedenle "Boş değer işlemesi" ayarı karar verir: nullable kesin olarak .nullable() ile, optional ise boş bir değeri eksik olarak değerlendirir.
İç içe nesneler nasıl işlenir?
Varsayılan olarak, iç içe bir nesne satır içi (inline) yazılır — tam olarak göründüğü yerde. "İç içe nesneleri bölün" öğesini açarak, her iç içe şekle kendi export const ...Schema'sı verin ve aynı şekiller otomatik olarak bir şemayı çoğaltmak yerine paylaşır.
Bir alan ne zaman z.string() yerine z.enum() olur?
"Numaralandırmaları algıla" açık olduğunda ve bir alan, örneklerin bir dizisinde — bir durum veya kategori sütunu gibi — küçük bir dizi farklı dize değerini (2-5) tekrar ettiğinde. Yalnızca benzersiz değerler veya çok fazla farklı olan bir alan z.string() kalır.
"Kesin nesneler" seçeneği ne yapıyor?
Üretilen her z.object()'e .strict() ekler, böylece giriş örneğin hiçbir zaman göstermediği bir anahtar içeriyorsa ayrıştırma başarısız olur — yazım hatalarını veya duyurulmayan API eklemelerini sessizce görmezden gelmek yerine yakalamak için yararlıdır.
JSON'um bir yere yükleniyor mu?
Hayır. Şema tamamen tarayıcınızda oluşturulur — JSON'unuz asla cihazınızdan ayrılmaz.