Go (Golang) में JSON प्रोसेसिंग: उदाहरणों के साथ पूर्ण गाइड

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

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

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

Go (Golang) में JSON प्रोसेसिंग: पूर्ण गाइड

\n\n

Go (Golang) एक आधुनिक कंपाइल्ड प्रोग्रामिंग भाषा है जिसे Google में विकसित किया गया है। इसकी मजबूत विशेषताओं में से एक मानक पैकेज encoding/json के माध्यम से JSON प्रारूप के लिए अंतर्निहित समर्थन है। कई अन्य भाषाओं के विपरीत, जहां तृतीय-पक्ष लाइब्रेरी स्थापित करने की आवश्यकता होती है, Go में JSON प्रोसेसिंग "आउट ऑफ द बॉक्स" उपलब्ध है और उच्च प्रदर्शन और सख्त टाइपिंग द्वारा प्रतिष्ठित है।

\n\n

इस लेख में, हम Go में JSON के साथ काम करने के सभी पहलुओं पर विस्तार से चर्चा करेंगे: सरल पार्सिंग से लेकर कस्टम टाइप और स्ट्रीम प्रोसेसिंग के साथ जटिल परिदृश्यों तक।

\n\n

मूल बातें: JSON को एन्कोड और डिकोड करना

\n\n

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

\n\n

उदाहरण: स्ट्रक्चर को JSON में सीरियलाइज़ करना

\n\n
package main\n\nimport (\n    "encoding/json"\n    "fmt"\n)\n\ntype User struct {\n    Name  string `json:"name"`\n    Age   int    `json:"age"`\n    Email string `json:"email,omitempty"`\n}\n\nfunc main() {\n    user := User{\n        Name:  "इवान पेत्रोव",\n        Age:   30,\n        Email: "ivan@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":"ivan@example.com"}\n}
\n\n

उदाहरण: JSON को स्ट्रक्चर में डीसीरियलाइज़ करना

\n\n
func main() {\n    jsonString := `{"name":"अन्ना स्मिर्नोवा","age":25,"email":"anna@example.com"}`\n    \n    var user User\n    err := json.Unmarshal([]byte(jsonString), &user)\n    if err != nil {\n        fmt.Println("डीसीरियलाइज़ेशन त्रुटि:", err)\n        return\n    }\n\n    fmt.Printf("नाम: %s, आयु: %d, ईमेल: %s\\n", user.Name, user.Age, user.Email)\n}
\n\n

स्ट्रक्चर टैग (Struct Tags)

\n\n

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

\n\n

टैग के मुख्य विकल्प:

\n\n
    \n
  • json:"name" — JSON में फ़ील्ड का नाम सेट करता है
  • \n
  • json:"-" — फ़ील्ड को JSON से पूरी तरह से बाहर करता है
  • \n
  • json:"name,omitempty" — यदि फ़ील्ड में शून्य मान (0, "", false, nil) है तो उसे छोड़ देता है
  • \n
  • json:"name,string" — संख्यात्मक फ़ील्ड को स्ट्रिंग में बदलने के लिए बाध्य करता है
  • \n
\n\n

विभिन्न टैग के साथ उदाहरण:

\n\n
type Product struct {\n    ID          int     `json:"id"`\n    Title       string  `json:"title"`\n    Description string  `json:"description,omitempty"`\n    Price       float64 `json:"price,string"`\n    SecretKey   string  `json:"-"`\n}\n\nfunc main() {\n    product := Product{\n        ID:          101,\n        Title:       "लैपटॉप",\n        Description: "",\n        Price:       899.99,\n        SecretKey:   "sk-12345",\n    }\n\n    jsonData, _ := json.MarshalIndent(product, "", "  ")\n    fmt.Println(string(jsonData))\n    // आउटपुट:\n    // {\n    //   "id": 101,\n    //   "title": "लैपटॉप",\n    //   "price": "899.99"\n    // }\n}
\n\n

मनमाने JSON डेटा के साथ काम करना (interface{})

\n\n

कभी-कभी JSON डेटा की संरचना पहले से ज्ञात नहीं होती है। ऐसे मामलों में, आप interface{} या map[string]interface{} प्रकार का उपयोग कर सकते हैं।

\n\n
func main() {\n    jsonString := `{"name":"टेस्ट","values":[1,2,3],"active":true,"metadata":{"version":2}}`\n    \n    var data map[string]interface{}\n    err := json.Unmarshal([]byte(jsonString), &data)\n    if err != nil {\n        fmt.Println("त्रुटि:", err)\n        return\n    }\n\n    // टाइप कास्टिंग के साथ मानों तक पहुंच\n    name := data["name"].(string)\n    values := data["values"].([]interface{})\n                    

अनुशंसाएँ