"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में स्ट्रिंग स्प्लिट के साथ JSON अनमर्शलिंग को कैसे अनुकूलित करें?

गो में स्ट्रिंग स्प्लिट के साथ JSON अनमर्शलिंग को कैसे अनुकूलित करें?

2024-11-01 को प्रकाशित
ब्राउज़ करें:468

How to Customize JSON Unmarshaling with String Split in Go?

गो में स्ट्रिंग स्प्लिट के साथ कस्टम अनमर्शल

JSON डेटा के साथ काम करते समय, विशिष्ट के लिए अनमर्शलिंग प्रक्रिया को बदलने या अनुकूलित करने की आवश्यकता अक्सर उत्पन्न होती है डेटा के प्रकार। इस मामले में, हम अल्पविराम से अलग किए गए मानों वाली JSON स्ट्रिंग को अनमर्शलिंग के दौरान []स्ट्रिंग स्लाइस में विभाजित करना चाहते हैं।

इसे प्राप्त करने के लिए, आइए []स्ट्रिंग प्रकार के लिए एक कस्टम अनमर्शलर लागू करें:

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
}

यह कस्टम अनमर्शलर कच्चे JSON डेटा को इनपुट के रूप में लेता है और इसे निर्दिष्ट डिलीमीटर ("-" इस मामले में) पर विभाजित करके स्ट्रिंग के एक स्लाइस में परिवर्तित करता है।

हमारे मूल में संरचना, अब हम विषय क्षेत्र के लिए इस कस्टम प्रकार का उपयोग कर सकते हैं:

type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}

यह हमें JSON डेटा को सीधे संरचना में अनमर्शल करने की अनुमति देता है, विषय फ़ील्ड स्वचालित रूप से अलग-अलग स्ट्रिंग्स में विभाजित हो जाती है:

json := `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`
var s Student
if err := json.Unmarshal([]byte(json), &s); err != nil {
    panic(err)
}
fmt.Println(s) // Output: {1234567 John Doe [Chemistry Maths History Geography]}
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3