Go में JSON के साथ काम करना: पार्सिंग और सीरियलाइज़ेशन शुरुआती गाइड

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

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

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

Go में JSON के साथ काम करने का परिचय

\n\n

JSON (JavaScript Object Notation) आधुनिक वेब एप्लिकेशन और माइक्रोसर्विसेज में डेटा एक्सचेंज का सबसे लोकप्रिय फॉर्मेट है। अपनी सादगी और पठनीयता के कारण, JSON REST API, कॉन्फ़िगरेशन फ़ाइलों और स्ट्रक्चर्ड डेटा स्टोरेज के लिए मानक बन गया है।

\n\n

Go (Golang) भाषा encoding/json पैकेज के माध्यम से JSON के लिए बिल्ट-इन शक्तिशाली सपोर्ट प्रदान करती है। यह पैकेज Go स्ट्रक्चर को JSON (सीरियलाइज़ेशन) और वापस (डीसीरियलाइज़ेशन या पार्सिंग) में आसानी से बदलने की अनुमति देता है।

\n\n

इस लेख में हम Go में JSON के साथ काम करने की मूल बातें समझेंगे: सरल उदाहरणों से लेकर जटिल नेस्टेड स्ट्रक्चर और एरर हैंडलिंग तक। यह सामग्री शुरुआती डेवलपर्स के लिए है जो Go सिंटैक्स की मूल बातें पहले से जानते हैं।

\n\n

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

\n\n

सीरियलाइज़ेशन (एन्कोडिंग) Go के आंतरिक प्रतिनिधित्व (स्ट्रक्चर, स्लाइस, मैप) से डेटा को JSON स्ट्रिंग में बदलने की प्रक्रिया है। Go में इसके लिए json.Marshal() फ़ंक्शन का उपयोग किया जाता है।

\n\n

सीरियलाइज़ेशन का बेसिक उदाहरण

\n\n
package main\n\nimport (\n    "encoding/json"\n    "fmt"\n)\n\ntype Person struct {\n    Name string\n    Age  int\n    City string\n}\n\nfunc main() {\n    person := Person{\n        Name: "राहुल शर्मा",\n        Age:  30,\n        City: "दिल्ली",\n    }\n\n    jsonBytes, err := json.Marshal(person)\n    if err != nil {\n        fmt.Println("सीरियलाइज़ेशन में त्रुटि:", err)\n        return\n    }\n\n    fmt.Println(string(jsonBytes))\n    // आउटपुट: {"Name":"राहुल शर्मा","Age":30,"City":"दिल्ली"}\n}
\n\n

ध्यान दें: json.Marshal() बाइट्स का स्लाइस ([]byte) लौटाता है, इसलिए हम इसे string() से स्ट्रिंग में बदलते हैं।

\n\n

json.MarshalIndent के साथ फ़ॉर्मेटेड आउटपुट

\n\n

डीबगिंग या पठनीय आउटपुट के लिए json.MarshalIndent() का उपयोग करें:

\n\n
jsonBytes, err := json.MarshalIndent(person, "", "  ")\nif err != nil {\n    fmt.Println("त्रुटि:", err)\n    return\n}\nfmt.Println(string(jsonBytes))\n// आउटपुट:\n// {\n//   "Name": "राहुल शर्मा",\n//   "Age": 30,\n//   "City": "दिल्ली"\n// }
\n\n

स्लाइस और मैप का सीरियलाइज़ेशन

\n\n

Go न केवल स्ट्रक्चर बल्कि अन्य डेटा प्रकारों को भी सीरियलाइज़ कर सकता है:

\n\n
// स्ट्रक्चर का स्लाइस\npeople := []Person{\n    {Name: "अंकिता", Age: 25, City: "मुंबई"},\n    {Name: "विक्रम", Age: 35, City: "बंगलौर"},\n}\njsonBytes, _ := json.Marshal(people)\nfmt.Println(string(jsonBytes))\n// आउटपुट: [{"Name":"अंकिता","Age":25,"City":"मुंबई"},{"Name":"विक्रम","Age":35,"City":"बंगलौर"}]\n\n// मैप\nscores := map[string]int{"गणित": 95, "भौतिकी": 88, "कंप्यूटर": 92}\njsonBytes, _ = json.Marshal(scores)\nfmt.Println(string(jsonBytes))\n// आउटपुट: {"कंप्यूटर":92,"गणित":95,"भौतिकी":88}
\n\n

JSON पार्सिंग: JSON को Go स्ट्रक्चर में बदलना

\n\n

पार्सिंग (डीसीरियलाइज़ेशन) उल्टी प्रक्रिया है: JSON स्ट्रिंग से हम Go स्ट्रक्चर प्राप्त करते हैं। इसके लिए json.Unmarshal() फ़ंक्शन का उपयोग किया जाता है।

\n\n

स्ट्रक्चर में पार्सिंग

\n\n
package main\n\nimport (\n    "encoding/json"\n    "fmt"\n)\n\ntype Person struct {\n    Name string\n    Age  int\n    City string\n}\n\nfunc main() {\n    jsonString := `{"Name":"राहुल शर्मा","Age":30,"City":"दिल्ली"}`\n\n    var person Person\n    err := json.Unmarshal([]byte(jsonString), &person)\n    if err != nil {\n        fmt.Println("पार्सिंग में त्रुटि:", err)\n        return\n    }\n\n    fmt.Printf("नाम: %s, उम्र: %d, शहर: %s\\n", person.Name, person.Age, person.City)\n    // आउटपुट: नाम: राहुल शर्मा, उम्र: 30, शहर: दिल्ली\n}
\n\n

महत्वपूर्ण: स्ट्रक्चर पर पॉइंटर पास करें (&person), अन्यथा Unmarshal इसके फ़ील्ड को बदल नहीं पाएगा।

\n\n

map[string]interface{} में पार्सिंग

\n\n

यदि डेटा स्ट्रक्चर पहले से ज्ञात नहीं है, तो यूनिवर्सल टाइप का उपयोग करें:

\n\n
jsonString := `{"name":"अंकिता","                

ब्लॉग

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