Go में JSON के साथ काम करना: व्यावहारिक रूप से पार्सिंग और सीरियलाइज़ेशन

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

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

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

Go में JSON के साथ काम करना: व्यावहारिक रूप से पार्सिंग और सीरियलाइज़ेशन

\n\n

JSON (JavaScript Object Notation) वेब डेवलपमेंट में डेटा आदान-प्रदान के सबसे लोकप्रिय फॉर्मेट में से एक है। Go (Golang) भाषा में JSON के साथ काम करना मानक पैकेज encoding/json के माध्यम से कार्यान्वित किया जाता है, जो सीरियलाइज़ेशन (डेटा स्ट्रक्चर को JSON में बदलना) और डीसीरियलाइज़ेशन (JSON को Go स्ट्रक्चर में पार्स करना) के लिए शक्तिशाली और सुविधाजनक उपकरण प्रदान करता है। इस लेख में, हम व्यावहारिक उदाहरणों के साथ विस्तार से समझेंगे कि Go में JSON के साथ कैसे काम करें।

\n\n

मूल बातें: स्ट्रक्चर का JSON में सीरियलाइज़ेशन

\n\n

Go में JSON के साथ काम करने का सबसे सामान्य तरीका टैग वाले स्ट्रक्चर का उपयोग करना है। टैग JSON में फ़ील्ड के नाम निर्धारित करने की अनुमति देते हैं, जो Go में फ़ील्ड के नामों से भिन्न हो सकते हैं। आइए सीरियलाइज़ेशन के एक बुनियादी उदाहरण पर विचार करें:

\n\n
package main\n\nimport (\n    "encoding/json"\n    "fmt"\n)\n\ntype User struct {\n    ID       int    `json:"id"`\n    Name     string `json:"name"`\n    Email    string `json:"email"`\n    IsActive bool   `json:"is_active"`\n}\n\nfunc main() {\n    user := User{\n        ID:       1,\n        Name:     "इवान पेत्रोव",\n        Email:    "ivan@example.com",\n        IsActive: true,\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    // आउटपुट: {"id":1,"name":"इवान पेत्रोव","email":"ivan@example.com","is_active":true}\n}
\n\n

ध्यान दें: हम JSON में कुंजियों के नामों को नियंत्रित करने के लिए टैग json:"फ़ील्ड_का_नाम" का उपयोग कर रहे हैं। यह विशेष रूप से तब उपयोगी होता है जब नामकरण के कुछ मानकों का पालन करना हो (उदाहरण के लिए, JSON में snake_case और Go में CamelCase)।

\n\n

JSON को Go स्ट्रक्चर में पार्स करना

\n\n

JSON डेटा का स्ट्रक्चर में डीसीरियलाइज़ेशन (पार्सिंग) json.Unmarshal फ़ंक्शन का उपयोग करके किया जाता है। यह महत्वपूर्ण है कि स्ट्रक्चर JSON ऑब्जेक्ट की संरचना से मेल खाता हो। आइए अपने उदाहरण को जारी रखें:

\n\n
func main() {\n    jsonString := `{"id":2,"name":"मारिया सिदोरोवा","email":"maria@example.com","is_active":false}`\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("ID: %d, Name: %s, Email: %s, Active: %t\\n",\n        user.ID, user.Name, user.Email, user.IsActive)\n    // आउटपुट: ID: 2, Name: मारिया सिदोरोवा, Email: maria@example.com, Active: false\n}
\n\n

महत्वपूर्ण: json.Unmarshal फ़ंक्शन में हमेशा स्ट्रक्चर का पॉइंटर (&user) पास किया जाता है, अन्यथा परिवर्तन सहेजे नहीं जाएंगे।

\n\n

नेस्टेड स्ट्रक्चर और ऐरे के साथ काम करना

\n\n

वास्तविक JSON डेटा में अक्सर नेस्टेड ऑब्जेक्ट और ऐरे होते हैं। Go नेस्टेड स्ट्रक्चर का उपयोग करके ऐसे मामलों को सुंदर ढंग से संभालने की अनुमति देता है:

\n\n
type Address struct {\n    City    string `json:"city"`\n    Street  string `json:"street"`\n    ZipCode string `json:"zip_code"`\n}\n\ntype Employee struct {\n    ID      int      `json:"id"`\n    Name    string   `json:"name"`\n    Skills  []string `json:"skills"`\n    Address Address  `json:"address"`\n}\n\nfunc main() {\n    jsonData := `{\n        "id": 101,\n        "name": "अलेक्सेई इवानोव",\n        "skills": ["Go", "Python", "Docker"],\n        "address": {\n            "city": "मॉस्को",\n            "street": "टावर्सकाया, 10",\n            "zip_code": "101000"\n        }\n    }`\n\n    var emp Employee\n    err := json.Unmarshal([]byte(jsonData), &emp)\n    if err != nil {\n        fmt.Println("त्रुटि:", err)\n        return\n    }\n\n    fmt.Printf("कर्मचारी: %s, शहर: %s, कौशल: %v\\n",\n        emp.Name, emp.Address.City, emp.Skills)\n    // आउटपुट: कर्मचारी: अलेक्सेई इवानोव, शहर: मॉस्को, कौशल: [Go Python Docker]\n}
\n\n

Go में ऐरे के लिए स्लाइस ([]string) का उपयोग किया जाता है, और नेस्टेड ऑब्जेक्ट के लिए अलग-अलग स्ट्रक्चर का। ऑब्जेक्ट के JSON ऐरे को पार्स करते समय

ब्लॉग

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