Go में JSON के साथ काम करने का परिचय
\n\nJSON (JavaScript Object Notation) एक हल्का डेटा विनिमय प्रारूप है जो वेब डेवलपमेंट, API और कॉन्फ़िगरेशन फ़ाइलों में व्यापक रूप से उपयोग किया जाता है। Go भाषा (Golang) एक अंतर्निहित पैकेज encoding/json प्रदान करती है, जो डेटा के पार्सिंग (डिकोडिंग) और सीरियलाइज़ेशन (एन्कोडिंग) को आसानी से करने की अनुमति देता है। इस लेख में, हम व्यावहारिक उदाहरणों के साथ Go में JSON के साथ काम करने की मूल बातें समझेंगे, जो शुरुआती डेवलपर्स के लिए भी समझने योग्य हैं।
encoding/json पैकेज की मूल बातें
\n\nपैकेज encoding/json Go की एक मानक लाइब्रेरी है जिसे अतिरिक्त इंस्टॉलेशन की आवश्यकता नहीं है। इस पैकेज में दो मुख्य उपकरण हैं - फ़ंक्शन json.Marshal (सीरियलाइज़ेशन) और json.Unmarshal (डीसीरियलाइज़ेशन)।
संरचनाएं और JSON टैग
\n\nGo में, डेटा आमतौर पर संरचनाओं (struct) के रूप में दर्शाया जाता है। JSON में फ़ील्ड नामों को प्रबंधित करने के लिए टैग का उपयोग किया जाता है। आइए एक सरल उदाहरण देखें:
package main\n\nimport (\n "encoding/json"\n "fmt"\n)\n\n// JSON टैग के साथ संरचना परिभाषित करें\ntype Person struct {\n Name string `json:"name"`\n Age int `json:"age"`\n Email string `json:"email,omitempty"`\n IsAdmin bool `json:"is_admin"`\n}\n\nfunc main() {\n // संरचना का एक उदाहरण बनाएँ\n person := Person{\n Name: "इवान पेत्रोव",\n Age: 30,\n Email: "ivan@example.com",\n IsAdmin: true,\n }\n \n // JSON में सीरियलाइज़ करें\n jsonData, _ := json.Marshal(person)\n fmt.Println(string(jsonData))\n}\n\n\nनिष्पादन परिणाम:
\n\n{"name":"इवान पेत्रोव","age":30,"email":"ivan@example.com","is_admin":true}\n\nमहत्वपूर्ण बिंदु:
\n- \n
- टैग
json:"name"बताता है कि फ़ील्ड JSON में क्या नाम से जाना जाएगा \n - विकल्प
omitemptyखाली फ़ील्ड (शून्य मान) को छोड़ देता है \n - संरचना के फ़ील्ड निर्यात योग्य होने चाहिए (बड़े अक्षर से शुरू होने चाहिए) \n
JSON में डेटा का सीरियलाइज़ेशन (Marshal)
\n\nसीरियलाइज़ेशन Go संरचना या अन्य डेटा प्रकार को JSON स्ट्रिंग में बदलने की प्रक्रिया है। फ़ंक्शन json.Marshal बाइट्स का एक स्लाइस ([]byte) और एक त्रुटि लौटाता है।
विभिन्न प्रकारों के सीरियलाइज़ेशन के उदाहरण
\n\npackage main\n\nimport (\n "encoding/json"\n "fmt"\n)\n\ntype Product struct {\n ID int `json:"id"`\n Name string `json:"name"`\n Price float64 `json:"price"`\n Tags []string `json:"tags,omitempty"`\n InStock bool `json:"in_stock"`\n}\n\nfunc main() {\n // संरचना का सीरियलाइज़ेशन\n product := Product{\n ID: 101,\n Name: "लैपटॉप",\n Price: 79999.99,\n Tags: []string{"इलेक्ट्रॉनिक्स", "लैपटॉप"}, \n InStock: true,\n }\n \n // इंडेंटेशन के साथ सुंदर आउटपुट\n jsonData, _ := json.MarshalIndent(product, "", " ")\n fmt.Println(string(jsonData))\n \n // संरचनाओं के स्लाइस का सीरियलाइज़ेशन\n products := []Product{\n {ID: 1, Name: "माउस", Price: 1500.00, InStock: true},\n {ID: 2, Name: "कीबोर्ड", Price: 3500.00, InStock: false},\n }\n \n jsonArray, _ := json.Marshal(products)\n fmt.Println(string(jsonArray))\n}\n\n\nपरिणाम:
\n\n{\n "id": 101,\n "name": "लैपटॉप",\n "price": 79999.99,\n "tags": [\n "इलेक्ट्रॉनिक्स",\n "लैपटॉप"\n ],\n "in_stock": true\n}\n[{"id":1,"name":"माउस","price":1500,"in_stock":true},{"id":2,"name":"कीबोर्ड","price":3500,"in_stock":false}]\n\nGo में JSON का पार्सिंग (Unmarshal)
\n\nपार्सिंग उलटी प्रक्रिया है: JSON स्ट्रिंग को Go संरचना में बदलना। इसके लिए फ़ंक्शन json.Unmarshal का उपयोग किया जाता है।
पार्सिंग का मूल उदाहरण
\n\npackage main\n\nimport (\n "encoding/json"\n "fmt"\n "log"\n)\n\ntype User struct {\n Username string `json:"username"`\n Age