Go का सशक्त `encoding/json` पैकेज, Go structs को JSON में बदलने की प्रक्रिया को सरल बनाता है, जो डेटा सीरियलाइज़ेशन, API इंटरैक्शन और कॉन्फ़िगरेशन फ़ाइल प्रबंधन का एक महत्वपूर्ण पहलू है। यह गाइड विभिन्न परिदृश्यों को संभालने के लिए कुशल तकनीकों का पता लगाता है, जिसमें बेसिक structs, नेस्टेड संरचनाएँ और कस्टमाइज़्ड JSON फ़ॉर्मेटिंग शामिल हैं।
विषय-सूची
- बेसिक Struct से JSON रूपांतरण
- नेस्टेड Structs को संभालना
- JSON आउटपुट फ़ॉर्मेटिंग को नियंत्रित करना
- मज़बूत त्रुटि प्रबंधन
बेसिक Struct से JSON रूपांतरण
`json.Marshal()` फ़ंक्शन का उपयोग करके एक साधारण Go struct को JSON में बदलना सीधा है। आइए एक बुनियादी उदाहरण के साथ समझाते हैं:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
person := Person{Name: "John Doe", Age: 30}
jsonData, err := json.Marshal(person)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(jsonData))
}
`json:”name”` और `json:”age”` टैग स्ट्रक्चर फ़ील्ड को JSON कुंजियों से मैप करते हैं। `json.Marshal()` एक बाइट स्लाइस देता है, जिसे हम स्ट्रिंग में बदलते हैं। महत्वपूर्ण बात यह है कि हमेशा त्रुटियों की जांच करें।
नेस्टेड Structs को संभालना
`json.Marshal()` की सुगठितता नेस्टेड structs तक विस्तारित होती है। इस उदाहरण पर विचार करें:
package main
import (
"encoding/json"
"fmt"
)
type Address struct {
Street string `json:"street"`
City string `json:"city"`
}
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address Address `json:"address"`
}
func main() {
address := Address{Street: "123 Main St", City: "Anytown"}
person := Person{Name: "Jane Doe", Age: 25, Address: address}
jsonData, err := json.Marshal(person)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(jsonData))
}
`json.Marshal()` पुनरावर्ती रूप से नेस्टेड संरचनाओं को संभालता है, उपयुक्त JSON पदानुक्रम बनाता है।
JSON आउटपुट फ़ॉर्मेटिंग को नियंत्रित करना
बेहतर पठनीयता के लिए, विशेष रूप से जटिल संरचनाओं के साथ, `json.MarshalIndent()` का उपयोग करें:
package main
import (
"encoding/json"
"fmt"
)
// ... (Person और Address structs पिछले उदाहरणों से) ...
func main() {
// ... (person वेरिएबल पिछले उदाहरणों से) ...
jsonData, err := json.MarshalIndent(person, "", " ")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(jsonData))
}
दूसरा तर्क इंडेंट स्ट्रिंग है (यहाँ, दो रिक्त स्थान)। यह बड़े करीने से स्वरूपित JSON आउटपुट देता है।
मज़बूत त्रुटि प्रबंधन
हमेशा व्यापक त्रुटि प्रबंधन को शामिल करें। उपरोक्त उदाहरण एक बुनियादी दृष्टिकोण प्रदर्शित करते हैं; उत्पादन कोड में, अधिक परिष्कृत त्रुटि प्रबंधन पर विचार करें, संभावित रूप से लॉगिंग और कस्टम त्रुटि प्रकारों सहित।
यह व्यापक गाइड आपको Go structs को JSON में कुशलतापूर्वक बदलने, विभिन्न जटिलताओं को अनुग्रह और परिशुद्धता से प्रबंधित करने का ज्ञान प्रदान करता है। याद रखें कि मज़बूत अनुप्रयोगों के लिए उचित त्रुटि प्रबंधन सर्वोपरि है।