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

गो में अनमर्शल गैर-मानक JSON समय प्रारूपों को कैसे कस्टमाइज़ करें?

2024-12-23 को प्रकाशित
ब्राउज़ करें:749

How to Custom Unmarshal Non-Standard JSON Time Formats in Go?

गैर-मानक JSON समय प्रारूपों के लिए कस्टम अन/मार्शलिंग

JSON डेटा से निपटते समय जिसमें गैर-मानक प्रारूपों में समय मान शामिल होते हैं, अंतर्निहित JSON डिकोडर में त्रुटियाँ आ सकती हैं। ऐसी स्थितियों को संभालने के लिए, कस्टम मार्शल और अनमार्शल फ़ंक्शन लागू किए जा सकते हैं।

निम्नलिखित JSON पर विचार करें:

{
    "name": "John",
    "birth_date": "1996-10-07"
}

और वांछित गो संरचना:

type Person struct {
    Name string `json:"name"`
    BirthDate time.Time `json:"birth_date"`
}

मानक JSON डिकोडर का उपयोग करने से "जन्मदिनांक" फ़ील्ड को पार्स करते समय त्रुटि होगी। इस व्यवहार को अनुकूलित करने के लिए, एक प्रकार का उपनाम बनाया जा सकता है और संरचना में जोड़ा जा सकता है:

type JsonBirthDate time.Time

फिर, कस्टम मार्शल और अनमर्शल फ़ंक्शन लागू किए जाते हैं:

func (j *JsonBirthDate) UnmarshalJSON(b []byte) error {
    s := strings.Trim(string(b), `"`) // Remove quotes
    t, err := time.Parse("2006-01-02", s)
    if err != nil {
        return err
    }
    *j = JsonBirthDate(t)
    return nil
}

func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}

इन कस्टम फ़ंक्शंस के साथ, JSON को अब गो स्ट्रक्चर में डिकोड किया जा सकता है जैसा कि इरादा था:

person := Person{}

decoder := json.NewDecoder(req.Body);

if err := decoder.Decode(&person); err != nil {
    log.Println(err)
}

// Print the birth date using the Format function
fmt.Println(person.BirthDate.Format("2006-01-02"))
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3