JSON से गैर-मानक समय प्रारूप को पार्स करना
JSON डेटा को एक कस्टम संरचना में डिकोड करते समय, दिनांक प्रारूपों में विसंगतियां उत्पन्न हो सकती हैं। इसे संबोधित करने के लिए, गोलंग कस्टम मार्शल और अनमर्शल फ़ंक्शंस को लागू करने का विकल्प प्रदान करता है। समय फ़ील्ड के लिए बनाया गया है, और मार्शलर और अनमर्शलर इंटरफ़ेस निम्नानुसार कार्यान्वित किए गए हैं:
JsonBirthDate time.Time टाइप करें // UnmarshalJSON एक JSON स्ट्रिंग को समय मान में अनुवादित करता है। func (j *JsonBirthDate) UnmarshalJSON(b []बाइट) त्रुटि { s := strings.Trim(string(b), `"`) टी, त्रुटि := समय.पार्स('2006-01-02', एस) यदि त्रुटि !=शून्य { ग़लती से वापसी } *j = JsonBirthDate(t) शून्य वापसी } // मार्शलजेएसओएन एक समय मान को जेएसओएन स्ट्रिंग में परिवर्तित करता है। func (j JsonBirthDate) मार्शलJSON() ([]बाइट, त्रुटि) { वापसी json.Marshal(time.Time(j)) }यह कस्टम तर्क जांचता है कि क्या JSON मान वांछित प्रारूप में है और तदनुसार इसे पार्स करता है।
अद्यतित संरचना और पार्सिंगtype JsonBirthDate time.Time // UnmarshalJSON translates a JSON string to a time value. func (j *JsonBirthDate) UnmarshalJSON(b []byte) error { s := strings.Trim(string(b), `"`) t, err := time.Parse("2006-01-02", s) if err != nil { return err } *j = JsonBirthDate(t) return nil } // MarshalJSON converts a time value to a JSON string. func (j JsonBirthDate) MarshalJSON() ([]byte, error) { return json.Marshal(time.Time(j)) }
संरचना है कस्टम प्रकार का उपयोग करने के लिए अद्यतन किया गया है, और डिकोडिंग सामान्य रूप से आगे बढ़ सकती है:
व्यक्ति संरचना टाइप करें { नाम स्ट्रिंग `json:"name"` जन्मतिथि JsonBirthDate `json:"birth_date"` } डिकोडर := json.NewDecoder(req.Body) यदि त्रुटि := डिकोडर.डिकोड(&व्यक्ति); त्रुटि != शून्य { लॉग.प्रिंट्लन(त्रुटि) }
अतिरिक्त सुविधाएंtype Person struct { Name string `json:"name"` BirthDate JsonBirthDate `json:"birth_date"` } decoder := json.NewDecoder(req.Body) if err := decoder.Decode(&person); err != nil { log.Println(err) }
// प्रारूप प्रिंट करता है निर्दिष्ट प्रारूप स्ट्रिंग का उपयोग करके दिनांक। func (j JsonBirthDate) प्रारूप (स्ट्रिंग) स्ट्रिंग { टी := समय.समय(जे) वापसी t.प्रारूप }यह कस्टम मार्शलिंग और अनमर्शलिंग दृष्टिकोण JSON से समय मानों के लचीले पार्सिंग की अनुमति देता है, भले ही वे मानक प्रारूपों से विचलित हों।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3