गोलंग में, एन्कोडिंग/json.Marshal फ़ंक्शन का उपयोग आमतौर पर ऑब्जेक्ट को JSON में बदलने के लिए किया जाता है। हालाँकि, डिफ़ॉल्ट सेटिंग्स के तहत, यह वांछित JSON लेआउट के साथ संरेखित नहीं हो सकता है। यह आलेख डिफ़ॉल्ट लेआउट को ओवरराइड करने और JSON मार्शलिंग के दौरान time.Time फ़ील्ड द्वारा उपयोग किए जाने वाले प्रारूप को अनुकूलित करने के लिए एक समाधान दिखाता है। इस संरचना को JSON पर मार्शल करते समय, आप एक विशिष्ट कस्टम लेआउट का उपयोग करना चाहते हैं।
s := {"starttime":time.Now(), "name":"ali"}
s := {"starttime":time.Now(), "name":"ali"}import "एफएमटी" "समय" आयात करें "एन्कोडिंग/जेसन" आयात करें jsonTime struct टाइप करें { समय.समय एफ स्ट्रिंग } func (j jsonTime) प्रारूप() स्ट्रिंग { वापसी j.Time.Format(j.f) } func (j jsonTime) मार्शलटेक्स्ट() ([]बाइट, त्रुटि) { वापसी []बाइट(j.format()), शून्य } func (j jsonTime) मार्शलJSON() ([]बाइट, त्रुटि) { वापसी []बाइट(``` j.format() ````), शून्य }
import "fmt"
import "time"
import "encoding/json"
type jsonTime struct {
time.Time
f string
}
func (j jsonTime) format() string {
return j.Time.Format(j.f)
}
func (j jsonTime) MarshalText() ([]byte, error) {
return []byte(j.format()), nil
}
func (j jsonTime) MarshalJSON() ([]byte, error) {
return []byte(`"` j.format() `"`), nil
}
कस्टम जेसनटाइम प्रकार के साथ, अब आप वांछित लेआउट का उपयोग करके अपनी एस संरचना को मार्शल कर सकते हैं :
jt := jsonTime{time.Now(), time.Kitchen} x := मानचित्र[स्ट्रिंग]इंटरफ़ेस{}{ "फू": जेटी, "बार": "बाज़", } डेटा, त्रुटि := json.Marshal(x) यदि त्रुटि !=शून्य { घबराहट(गलती) }jt := jsonTime{time.Now(), time.Kitchen}
x := map[string]interface{}{
"foo": jt,
"bar": "baz",
}
data, err := json.Marshal(x)
if err != nil {
panic(err)
}
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3