Go Struct से JSON: शुरुआती लोगों के लिए उदाहरणों के साथ पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go struct को JSON में कैसे बदलें: शुरुआती से विशेषज्ञ तक

\n\n

JSON के साथ काम करना किसी भी Go बैकएंड डेवलपर के लिए रोज़ की रोटी है। लगभग हर दिन आपको क्लाइंट को डेटा भेजना होता है, API से अनुरोध प्राप्त करने होते हैं या कॉन्फ़िगरेशन सहेजने होते हैं। और 90% मामलों में यह JSON ही होता है। लेकिन अपनी मूल struct को पढ़ने योग्य JSON में कैसे बदलें? यह सरल लगता है, है ना? हालांकि, विवरणों में छिपी है असली चुनौती: गलत टैग, खाली फ़ील्ड, भूली हुई त्रुटियाँ — और आपका API वह नहीं लौटाता जो होना चाहिए।

\n\n

इस लेख में हम Go struct को JSON में बदलने की प्रक्रिया को बुनियादी से लेकर उन्नत तकनीकों तक समझेंगे। आप जानेंगे कि टैग कैसे काम करते हैं, खाली फ़ील्ड को कैसे छिपाएँ, नेस्टेड संरचनाओं को कैसे सीरियलाइज़ करें और त्रुटियों से कैसे बचें। चलिए शुरू करते हैं!

\n\n

मूल बातें: encoding/json पैकेज

\n\n

Go की मानक लाइब्रेरी में एक शक्तिशाली पैकेज encoding/json है। इसके मुख्य उपकरण हैं json.Marshal (struct को JSON में बदलने के लिए) और json.Unmarshal (विपरीत प्रक्रिया के लिए) फ़ंक्शन।

\n\n

आइए एक बुनियादी उदाहरण देखें। हमारे पास एक उपयोगकर्ता संरचना है:

\n\n
package main\n\nimport (\n    "encoding/json"\n    "fmt"\n)\n\ntype User struct {\n    Name  string\n    Age   int\n    Email string\n}\n\nfunc main() {\n    user := User{\n        Name:  "एलेक्सी",\n        Age:   30,\n        Email: "alex@example.com",\n    }\n\n    jsonData, err := json.Marshal(user)\n    if err != nil {\n        fmt.Println("त्रुटि:", err)\n        return\n    }\n\n    fmt.Println(string(jsonData))\n    // आउटपुट: {"Name":"एलेक्सी","Age":30,"Email":"alex@example.com"}\n}
\n\n

सब कुछ काम करता है, लेकिन एक बारीकी है: JSON में कुंजियाँ संरचना के फ़ील्ड नामों (बड़े अक्षरों में) से मेल खाती हैं। और यह JSON मानकों के अनुरूप नहीं है (आमतौर पर camelCase या snake_case का उपयोग किया जाता है)।

\n\n

JSON टैग: कुंजी नामों पर नियंत्रण

\n\n

यह नियंत्रित करने के लिए कि फ़ील्ड JSON में कैसे दिखाई देंगे, स्ट्रक्चर टैग का उपयोग किया जाता है। ये विशेष एनोटेशन हैं जो फ़ील्ड प्रकार के बाद बैकटिक में लिखे जाते हैं।

\n\n
type User struct {\n    Name  string `json:"name"`\n    Age   int    `json:"age"`\n    Email string `json:"email"`\n}\n\n// अब आउटपुट होगा:\n// {"name":"एलेक्सी","age":30,"email":"alex@example.com"}
\n\n

टैग एक साथ कई समस्याओं का समाधान करते हैं:

\n
    \n
  • फ़ील्ड नाम बदलना — कुंजियों को सुंदर और पढ़ने योग्य बनाता है
  • \n
  • फ़ील्ड छोड़ना — json:"-" के साथ फ़ील्ड पूरी तरह से JSON से हटा दिया जाता है
  • \n
  • खाली फ़ील्ड प्रबंधन — omitempty विकल्प फ़ील्ड को छिपाता है यदि उसमें शून्य मान है
  • \n
\n\n

omitempty के साथ व्यावहारिक उदाहरण

\n\n
type User struct {\n    Name    string `json:"name"`\n    Age     int    `json:"age,omitempty"`\n    Email   string `json:"email,omitempty"`\n    IsAdmin bool   `json:"is_admin,omitempty"`\n}\n\nfunc main() {\n    user := User{Name: "मारिया"}\n    jsonData, _ := json.Marshal(user)\n    fmt.Println(string(jsonData))\n    // आउटपुट: {"name":"मारिया"}\n    // Age, Email और IsAdmin छोड़ दिए गए क्योंकि वे खाली हैं\n}
\n\n

ध्यान दें: omitempty शून्य मानों के लिए काम करता है — 0, false, खाली स्ट्रिंग, nil। यह API के लिए बहुत उपयोगी है जहाँ अनावश्यक फ़ील्ड नहीं ले जानी होतीं।

\n\n

नेस्टेड संरचनाएँ और स्लाइस

\n\n

वास्तविक प्रोजेक्ट्स में डेटा शायद ही कभी सपाट होता है। अक्सर आपके पास नेस्टेड ऑब्जेक्ट या ऐरे होते हैं। Go इसे बखूबी संभालता है — json पैकेज सभी फ़ील्ड को पुनरावर्ती रूप से प्रोसेस करता है।

\n\n
type Address struct {\n    City    string `json:"city"`\n    Street  string `json:"street"`\n    ZipCode string `json:"zip_code"`\n}\n\ntype Company struct {\n    Name    string    `json:"name"`\n    Address Address   `json:"address"`\n    Tags    []string  `json:"tags"`\n}\n\nfunc main() {\n    company := Company{\n                

ब्लॉग

पुस्तक अनुशंसाएँ