अनमर्शल गलत तरीके से स्वरूपित दिनांक समय
गो में JSON डेटाटाइम को अनमर्शल करते समय, एक सामान्य समस्या तब उत्पन्न होती है जब JSON में प्रदान किया गया टाइमज़ोन ऑफसेट गलत तरीके से स्वरूपित होता है . आरएफसी3339 के अनुसार अपेक्षित प्रारूप, कोलन के साथ 02:00 है, लेकिन कुछ स्रोत इसे कोलन के बिना 0200 के रूप में आउटपुट कर सकते हैं।
कस्टम अनमर्शलिंग सॉल्यूशन
To इस विसंगति को संभालें, एक अनुकूलित समय फ़ील्ड प्रकार परिभाषित किया जा सकता है जो दोनों प्रारूपों का समर्थन करता है:
type MyTime struct {
time.Time
}
func (self *MyTime) UnmarshalJSON(b []byte) (err error) {
s := string(b)
s = s[1:len(s)-1] // Remove the quotes
t, err := time.Parse(time.RFC3339Nano, s)
if err != nil {
t, err = time.Parse("2006-01-02T15:04:05.999999999Z0700", s)
}
self.Time = t
return
}
यह समाधान सबसे पहले JSON स्ट्रिंग से उद्धरण हटाने के लिए UnmarshalJSON विधि का लाभ उठाता है। फिर, यह मानक RFC3339Nano प्रारूप का उपयोग करके डेटाटाइम को पार्स करने का प्रयास करता है। यदि वह विफल हो जाता है, तो यह एक संशोधित प्रारूप को पार्स करने पर वापस आ जाता है जो कोलन को टाइमज़ोन ऑफ़सेट से हटा देता है। यह इस प्रकार है:
प्रकार परीक्षण संरचना { समय MyTime `json:"समय"` }
यह JSON को टेस्ट स्ट्रक्चर में अनमर्शल्ड करने की अनुमति देता है, जिसमें टाइम फ़ील्ड सही दिनांक और समय से भरा होता है, भले ही टाइमज़ोन ऑफ़सेट कोलन-पृथक हो या नहीं।type Test struct {
Time MyTime `json:"time"`
}
समय प्रारूप स्ट्रिंग्स में वर्ष 2006 का उपयोग गो की प्रारंभिक रिलीज से एक ऐतिहासिक कलाकृति है। इसका कोई व्यावहारिक महत्व नहीं है और यह डेटाटाइम की शुद्धता या स्वरूपण को प्रभावित नहीं करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3