गैर-मानक 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