Go Programming

Go Struct को JSON रूपांतरण में महारथ

Spread the love

Go का सशक्त `encoding/json` पैकेज, Go structs को JSON में बदलने की प्रक्रिया को सरल बनाता है, जो डेटा सीरियलाइज़ेशन, API इंटरैक्शन और कॉन्फ़िगरेशन फ़ाइल प्रबंधन का एक महत्वपूर्ण पहलू है। यह गाइड विभिन्न परिदृश्यों को संभालने के लिए कुशल तकनीकों का पता लगाता है, जिसमें बेसिक 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 में कुशलतापूर्वक बदलने, विभिन्न जटिलताओं को अनुग्रह और परिशुद्धता से प्रबंधित करने का ज्ञान प्रदान करता है। याद रखें कि मज़बूत अनुप्रयोगों के लिए उचित त्रुटि प्रबंधन सर्वोपरि है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *