Oh MyUtils

JSON Schema जनरेटर - JSON डेटा से स्कीमा बनाएं ऑनलाइन

API सत्यापन, दस्तावेज़ीकरण और कोड जनरेशन के लिए JSON डेटा से JSON Schema बनाएं। Draft-04, Draft-07, और 2020-12 समर्थित — 100% क्लाइंट-साइड, सर्वर पर कोई डेटा नहीं भेजा जाता।

Schema ड्राफ्ट
आवश्यक फ़ील्ड
फ़ॉर्मेट पहचान
अतिरिक्त गुण
इंडेंटेशन
JSON इनपुट
JSON Schema आउटपुट
 

अक्सर पूछे जाने वाले प्रश्न

JSON Schema Generator क्या है?

JSON Schema Generator एक ऐसा टूल है जो नमूना JSON डेटा से स्वचालित रूप से JSON Schema परिभाषा बनाता है। JSON Schema एक मानक शब्दावली है (json-schema.org पर परिभाषित) जो JSON दस्तावेज़ों की संरचना, प्रकार और बाधाओं का वर्णन करती है। मैन्युअल रूप से स्कीमा परिभाषाएँ लिखने के बजाय, बस एक JSON उदाहरण पेस्ट करें और टूल ऑब्जेक्ट गुण, डेटा प्रकार, आवश्यक फ़ील्ड, एरे आइटम प्रकार और तिथियों और ईमेल जैसे स्ट्रिंग प्रारूपों सहित सही स्कीमा का अनुमान लगाता है।

मैं अपने JSON डेटा से JSON Schema कैसे बनाऊं?

बाईं ओर के इनपुट फ़ील्ड में अपना JSON डेटा पेस्ट करें। टूल तुरंत दाईं ओर के आउटपुट पैनल में JSON Schema बनाता है। आप स्कीमा ड्राफ्ट वर्शन (Draft-04, Draft-07, या 2020-12) चुनकर, आवश्यक फ़ील्ड पहचान टॉगल करके, तिथियों और ईमेल जैसे पैटर्न के लिए स्ट्रिंग फ़ॉर्मेट पहचान सक्षम करके आउटपुट को अनुकूलित कर सकते हैं।

क्या इस टूल का उपयोग करते समय मेरा JSON डेटा सुरक्षित है?

हाँ, पूरी तरह से। यह टूल क्लाइंट-साइड JavaScript का उपयोग करके आपके ब्राउज़र में सब कुछ प्रोसेस करता है। आपका JSON डेटा कभी भी आपके कंप्यूटर से बाहर नहीं जाता — कोई सर्वर अपलोड नहीं, कोई API कॉल नहीं, और कोई डेटा स्टोरेज नहीं।

मुझे कौन सा JSON Schema ड्राफ्ट वर्शन उपयोग करना चाहिए?

अपने इकोसिस्टम के आधार पर चुनें: Draft 2020-12 (डिफ़ॉल्ट) नवीनतम स्थिर मानक है और OpenAPI 3.1 में उपयोग किया जाता है। Draft-07 सत्यापन लाइब्रेरी और टूल द्वारा व्यापक रूप से समर्थित है। Draft-04 लीगेसी सिस्टम और OpenAPI 3.0 संगतता के लिए आवश्यक है।

टूल आवश्यक फ़ील्ड कैसे निर्धारित करता है?

डिफ़ॉल्ट रूप से, टूल जनरेट किए गए स्कीमा में सभी गैर-null गुणों को आवश्यक के रूप में चिह्नित करता है। null मान वाले फ़ील्ड को required एरे से बाहर रखा जाता है। आप इस व्यवहार को पूरी तरह से बंद कर सकते हैं।

टूल कौन से स्ट्रिंग फ़ॉर्मेट पहचानता है?

जब फ़ॉर्मेट पहचान सक्षम होती है, तो टूल स्ट्रिंग मानों का विश्लेषण करता है और पहचाने गए पैटर्न के लिए स्वचालित रूप से 'format' कीवर्ड जोड़ता है: date-time, date, time, ईमेल पते, URI/URL, UUID, IPv4 पते, और IPv6 पते।

'अतिरिक्त गुण' विकल्प क्या करता है?

JSON Schema में 'additionalProperties' कीवर्ड नियंत्रित करता है कि कोई ऑब्जेक्ट स्कीमा में सूचीबद्ध नहीं किए गए गुण रख सकता है या नहीं। 'अनुमति दें' (डिफ़ॉल्ट) पर सेट होने पर अतिरिक्त फ़ील्ड की अनुमति है। 'अस्वीकार' पर सेट होने पर सख्त अनुबंध बनाता है।

कोड उदाहरण

// JSON to JSON Schema generator
function jsonToSchema(json, options = {}) {
  const { draft = '2020-12', includeRequired = true, detectFormats = true } = options;
  const schemaUri = {
    'draft-04': 'http://json-schema.org/draft-04/schema#',
    'draft-07': 'http://json-schema.org/draft-07/schema#',
    '2020-12': 'https://json-schema.org/draft/2020-12/schema',
  }[draft];

  function inferSchema(value) {
    if (value === null) return { type: 'null' };
    if (typeof value === 'boolean') return { type: 'boolean' };
    if (typeof value === 'number') {
      return { type: Number.isInteger(value) ? 'integer' : 'number' };
    }
    if (typeof value === 'string') {
      const schema = { type: 'string' };
      if (detectFormats) {
        if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(value)) schema.format = 'date-time';
        else if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) schema.format = 'email';
        else if (/^https?:\/\//.test(value)) schema.format = 'uri';
      }
      return schema;
    }
    if (Array.isArray(value)) {
      if (value.length === 0) return { type: 'array', items: {} };
      const itemSchemas = value.map(inferSchema);
      const unique = dedup(itemSchemas);
      return { type: 'array', items: unique.length === 1 ? unique[0] : { oneOf: unique } };
    }
    if (typeof value === 'object') {
      const properties = {};
      const required = [];
      for (const [key, val] of Object.entries(value)) {
        properties[key] = inferSchema(val);
        if (includeRequired && val !== null) required.push(key);
      }
      const schema = { type: 'object', properties };
      if (required.length > 0) schema.required = required;
      return schema;
    }
    return {};
  }

  function dedup(schemas) {
    const seen = new Map();
    for (const s of schemas) {
      const key = JSON.stringify(s);
      if (!seen.has(key)) seen.set(key, s);
    }
    return [...seen.values()];
  }

  const parsed = JSON.parse(json);
  return { $schema: schemaUri, ...inferSchema(parsed) };
}

// Usage
const json = '{"name":"Alice","age":30,"email":"alice@example.com"}';
console.log(JSON.stringify(jsonToSchema(json), null, 2));

संबंधित उपकरण