Oh MyUtils

JSON से Go Struct - Go टाइप जनरेटर ऑनलाइन

JSON पेस्ट करें और तुरंत सही नामकरण, json टैग और टाइप अनुमान के साथ Go struct परिभाषाएं जनरेट करें — 100% आपके ब्राउज़र में।

रूट नाम
नेस्टिंग
इंडेंट
खाली टाइप
इंटीजर टाइप
फ़्लैग
JSON इनपुट
Go Struct आउटपुट
 

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

JSON से Go struct कनवर्टर क्या है?

JSON से Go struct कनवर्टर एक उपकरण है जो JSON डेटा से स्वचालित रूप से Go struct प्रकार परिभाषाएं उत्पन्न करता है। फ़ील्ड नाम, प्रकार और json struct टैग के साथ मैन्युअल रूप से struct परिभाषाएं लिखने के बजाय, आप एक नमूना JSON ऑब्जेक्ट पेस्ट करते हैं और उपकरण प्रत्येक फ़ील्ड के लिए सही Go प्रकार का अनुमान लगाता है।

JSON से Go structs कैसे उत्पन्न करें?

बाईं ओर के इनपुट फ़ील्ड में अपना JSON डेटा पेस्ट करें। उपकरण तुरंत दाईं ओर के आउटपुट पैनल में Go struct परिभाषाएं उत्पन्न करेगा। आप रूट struct नाम सेट करके, struct टैग पर omitempty टॉगल करके, इनलाइन या अलग नेस्टेड structs चुनकर, और nullable फ़ील्ड के लिए पॉइंटर प्रकार सक्षम करके आउटपुट को कस्टमाइज़ कर सकते हैं।

Go struct टैग में omitempty क्या करता है?

json struct टैग में `omitempty` विकल्प Go के JSON एनकोडर को बताता है कि यदि फ़ील्ड का मान शून्य है (खाली स्ट्रिंग, 0, false, nil पॉइंटर, खाली स्लाइस, या खाली मैप) तो आउटपुट से फ़ील्ड को छोड़ दें। यह API अनुरोधों के लिए उपयोगी है जहाँ आप केवल स्पष्ट रूप से सेट किए गए फ़ील्ड भेजना चाहते हैं।

इनलाइन या अलग structs में से कौन सा उपयोग करना चाहिए?

अलग structs (डिफ़ॉल्ट) प्रत्येक नेस्टेड ऑब्जेक्ट के लिए एक नामित प्रकार बनाते हैं, जिससे वे आपके कोडबेस में पुन: उपयोग योग्य होते हैं। इनलाइन structs प्रकार परिभाषा को सीधे एम्बेड करते हैं, जो अधिक संक्षिप्त है लेकिन पुन: उपयोग नहीं किया जा सकता। प्रोडक्शन कोड के लिए अलग structs और त्वरित प्रोटोटाइपिंग के लिए इनलाइन structs का उपयोग करें।

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

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

उपकरण Go नामकरण परंपराओं को कैसे संभालता है?

उपकरण Effective Go से Go की आधिकारिक नामकरण परंपराओं का पालन करता है। JSON फ़ील्ड नामों को निर्यातित struct फ़ील्ड के लिए PascalCase में बदला जाता है (जैसे, 'user_name' 'UserName' बन जाता है)। सामान्य संक्षिप्ताक्षर सही ढंग से कैपिटलाइज़ किए जाते हैं: 'id' 'ID' बन जाता है, 'url' 'URL' बन जाता है।

nullable फ़ील्ड के लिए पॉइंटर प्रकार कब उपयोग करने चाहिए?

पॉइंटर प्रकारों का उपयोग तब करें जब आपको शून्य मान और अनुपस्थित/null मान के बीच अंतर करने की आवश्यकता हो। पॉइंटर प्रकारों (*int) के साथ, एक अनुपस्थित फ़ील्ड nil बन जाता है। 'पॉइंटर प्रकार' विकल्प सक्षम करें जब ऐसे API के साथ काम करें जो वैकल्पिक या अनुपस्थित डेटा इंगित करने के लिए null का उपयोग करते हैं।

कोड उदाहरण

// JSON to Go struct generator
function jsonToGoStruct(json, rootName = 'AutoGenerated') {
  const structs = [];
  const abbreviations = new Set([
    'id', 'url', 'http', 'api', 'html', 'json', 'xml', 'sql',
    'ssh', 'tcp', 'udp', 'ip', 'dns', 'uid', 'uuid', 'cpu',
  ]);

  function toGoName(key) {
    return key.split(/[-_\s]+/).map(word => {
      if (abbreviations.has(word.toLowerCase())) {
        return word.toUpperCase();
      }
      return word.charAt(0).toUpperCase() + word.slice(1);
    }).join('');
  }

  function inferType(value, name) {
    if (value === null) return 'interface{}';
    if (typeof value === 'boolean') return 'bool';
    if (typeof value === 'number') {
      return Number.isInteger(value) ? 'int' : 'float64';
    }
    if (typeof value === 'string') return 'string';
    if (Array.isArray(value)) {
      if (value.length === 0) return '[]interface{}';
      return '[]' + inferType(value[0], name + 'Item');
    }
    if (typeof value === 'object') {
      const structName = toGoName(name);
      const fields = Object.entries(value).map(([key, val]) => {
        const goType = inferType(val, key);
        const goName = toGoName(key);
        return `\t${goName} ${goType} \`json:"${key}"\``;
      });
      structs.push(`type ${structName} struct {\n${fields.join('\n')}\n}`);
      return structName;
    }
    return 'interface{}';
  }

  const parsed = JSON.parse(json);
  inferType(parsed, rootName);
  return structs.reverse().join('\n\n');
}

// Example usage
const json = '{"user_id": 1, "user_name": "alice", "address": {"city": "NYC"}}';
console.log(jsonToGoStruct(json));
// Output:
// type Address struct {
// 	City string `json:"city"`
// }
//
// type AutoGenerated struct {
// 	UserID   int     `json:"user_id"`
// 	UserName string  `json:"user_name"`
// 	Address  Address `json:"address"`
// }

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