गोलांग में स्ट्रिंग स्प्लिट के साथ कस्टम अनमर्शल
समस्या:
जब एक होता है तो JSON अनमर्शल को संभालना फ़ील्ड को स्ट्रिंग ऑपरेशंस का उपयोग करके एक स्लाइस में विभाजित करने की आवश्यकता होती है। विशेष रूप से, प्रदान किए गए JSON में "विषय" फ़ील्ड को []स्ट्रिंग बनाने के लिए '-' पर विभाजित करने की आवश्यकता होती है।
समाधान:
इसे प्राप्त करने के लिए, हम यह कर सकते हैं एक कस्टम स्ट्रिंग स्लाइस प्रकार परिभाषित करें और इसके लिए json.Unmarshaler इंटरफ़ेस लागू करें। यहां बताया गया है:
type strslice []string
func (ss *strslice) UnmarshalJSON(data []byte) error {
var s string
if err := json.Unmarshal(data, &s); err != nil {
return err
}
*ss = strings.Split(s, "-")
return nil
}
यह कस्टम प्रकार हमें "विषयों" फ़ील्ड को एक स्ट्रिंग के रूप में अनमार्शल करने और फिर स्वचालित रूप से इसे एक स्लाइस में विभाजित करने की अनुमति देगा।
संशोधित संरचना:
अब, हम "विषयों" के लिए कस्टम स्ट्रस्लाइस प्रकार का उपयोग करने के लिए अपनी छात्र संरचना को अपडेट कर सकते हैं फ़ील्ड:
type Student struct {
StudentNumber int `json:"student_number"`
Name string `json:"name"`
Subjects strslice `json:"subjects"`
}
उपयोग:
इन संशोधनों के साथ, अब हम दिए गए JSON को अनमर्शल कर सकते हैं और "विषयों" फ़ील्ड को स्वचालित रूप से विभाजित कर सकते हैं:
func main() {
var s Student
err := json.Unmarshal([]byte(src), &s)
fmt.Println(s, err)
}
const src = `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`
आउटपुट:
{1234567 John Doe [Chemistry Maths History Geography]}
यह दृष्टिकोण JSON डेटा को अनमर्शल करते हुए फ़ील्ड परिवर्तनों को संभालने के लिए एक स्वच्छ और अनुकूलन योग्य तरीका प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3