श्रेणी: डेवलपर टूल
JSON से Zod स्कीमा कन्वर्टर
अपना डेटा अपलोड किए बिना नमूना JSON से Zod स्कीमा बनाएँ
JSON चिपकाएँ और अपने ब्राउज़र में Zod स्कीमा बनाएँ। ऑब्जेक्ट, सरणियाँ, स्ट्रिंग, संख्याएँ, बूलियन, null और वैकल्पिक फ़ील्ड का अनुमान लगाएँ, फिर TypeScript के लिए तैयार आउटपुट कॉपी करें। कुछ भी अपलोड नहीं होता।
import { z } from "zod";
export const userSchema = z.object({
id: z.number(),
name: z.string(),
isActive: z.boolean(),
score: z.null(),
tags: z.array(z.string()),
address: z.object({
city: z.string(),
country: z.string(),
}),
posts: z.array(z.object({
slug: z.string(),
views: z.number(),
pinned: z.boolean().optional(),
})),
});
export type User = z.infer<typeof userSchema>;
यह सिर्फ़ इसी नमूने से अनुमान लगाता है: यह देख सकता है कि किसी फ़ील्ड में स्ट्रिंग थी, यह नहीं कि वह स्ट्रिंग ईमेल होनी चाहिए, उसकी न्यूनतम लंबाई हो या वह चंद स्वीकृत मानों में से एक हो। नतीजे को शुरुआती बिंदु मानें और नियम खुद कसें।
इस पेज पर सब कुछ आपके ब्राउज़र में संसाधित होता है। कुछ भी अपलोड नहीं होता।
इस पेज पर सब कुछ आपके ब्राउज़र में संसाधित होता है। कुछ भी अपलोड नहीं होता।
यह टूल क्या करता है
यह टूल नमूना JSON को स्थानीय रूप से पढ़ता है और उससे मेल खाता Zod ऑब्जेक्ट स्कीमा तैयार करता है, जिसमें नेस्टेड ऑब्जेक्ट, सरणियाँ और यूनियन भी शामिल हैं। जब किसी सरणी में ऐसे ऑब्जेक्ट हों जो आपस में मेल न खाते हों — एक तत्व में `pinned` है और अगले में नहीं — तो उस key को चुपचाप हटाने के बजाय `.optional()` से चिह्नित किया जाता है, क्योंकि आमतौर पर वही बेमेल सबसे ज़रूरी बात होती है जिस पर आपका ध्यान जाना चाहिए। जो मान कभी-कभी null था, वह दो सदस्यों वाले यूनियन के बजाय `.nullable()` बन जाता है। जो यह नहीं कर सकता, वह है ऐसे नियम गढ़ना जो उसने कभी देखे ही नहीं: नमूना डेटा दिखाता है कि किसी फ़ील्ड में स्ट्रिंग थी, यह नहीं कि वह ईमेल होनी चाहिए, 80 अक्षरों से कम रहनी चाहिए या तीन स्वीकृत मानों में से एक होनी चाहिए। नतीजा कसने के लिए एक ढाँचा है, कोई पूरा अनुबंध नहीं।
इस्तेमाल कैसे करें
- एक प्रतिनिधि JSON नमूना चिपकाएँ — जितनी अधिक विविधता होगी, अनुमान उतना बेहतर होगा।
- स्कीमा को नाम दें और तय करें कि zod का import और अनुमानित टाइप शामिल करना है या नहीं।
- बनाया गया कोड कॉपी करें, फिर उन फ़ील्ड नियमों को खुद कसें जो आपका नमूना नहीं दिखा सका।
निजता
यह टूल पूरी तरह आपके ब्राउज़र में चलता है। आपका डेटा कभी अपलोड, सेव या साझा नहीं होता — टैब बंद करते ही वह हट जाता है।
अक्सर पूछे जाने वाले सवाल
- क्या मेरा JSON अपलोड होता है?
- नहीं। JSON का पार्सिंग और स्कीमा बनाना पूरी तरह ब्राउज़र टैब में होता है; न इनपुट और न आउटपुट किसी सर्वर पर भेजा, लॉग या संग्रहीत किया जाता है।
- अनुमानित सत्यापन कितना सटीक है?
- उतना ही जितना आपका नमूना। यह संरचना और टाइप को ठीक-ठीक पकड़ता है, पर वे बंधन नहीं जान सकता जिन्हें संरचना व्यक्त नहीं करती — प्रारूप, परास, विकल्प-सूची, या उत्पादन में वास्तव में कौन-से फ़ील्ड अनिवार्य हैं। भरोसा करने से पहले हर फ़ील्ड जाँच लें।
- क्या यह सरणियाँ और वैकल्पिक फ़ील्ड संभालता है?
- हाँ। सरणियाँ z.array(...) बन जाती हैं, और जब किसी सरणी के ऑब्जेक्ट में अलग-अलग keys हों, तो जो सब में मौजूद नहीं हैं उन्हें .optional() से चिह्नित किया जाता है। जो फ़ील्ड कभी-कभी null था, वह .nullable() बन जाता है।
- क्या मैं आउटपुट TypeScript में इस्तेमाल कर सकता/सकती हूँ?
- हाँ। बनी हुई फ़ाइल स्कीमा को export करती है और, यदि विकल्प चालू रहे, `z.infer` टाइप उपनाम भी — यानी एक ही स्रोत से वैलिडेटर और उससे मेल खाता स्टैटिक टाइप।