] हालांकि, जब सीरियलाइज़ेशन और डिसेरिअलाइज़ेशन के लिए JSON का उपयोग करते हुए, अलग -अलग प्रकारों के आने वाले संदेशों को संभालने से एक चुनौती प्रस्तुत होती है।
निम्नलिखित उदाहरण पर विचार करें जहां आपके पास संदेश प्रकार "फू" और "बार" के लिए संरचनाएं हैं:
टाइप फू स्ट्रक्चर { एक स्ट्रिंग `json:" a "` B स्ट्रिंग `JSON:" B "` } टाइप बार स्ट्रक्चर { C स्ट्रिंग `JSON:" C "` D स्ट्रिंग `JSON:" D "` … हालाँकि, आपको विभिन्न प्रकार के संदेशों को संभालने के लिए अलग -अलग con.readjson (foo) और con.readjson (बार) कॉल का उपयोग करने की आवश्यकता होगी, जो अक्षम और बोझिल है। नियंत्रण स्ट्रिंग `JSON:" नियंत्रण "` X JSON.RAWMESSAGE } नियंत्रण क्षेत्र पेलोड के प्रकार को इंगित करता है, और x कच्चे JSON डेटा रखता है। इस दृष्टिकोण का उपयोग करके आने वाले संदेशों को deserialize करने के लिए:
var m संदेश गलत: = C.ReadJson (& m) अगर गलत! = nil { // संभाल त्रुटि } स्विच M.control { केस "फू": वर फू फू यदि गलत: = json.unmarshal ([] बाइट (m.x), और foo); irr! = nil { // संभाल त्रुटि } // फू के साथ कुछ करो मामला "बार": // बार हैंडलिंग बार के लिए एक ही पैटर्न का पालन करें … स्विच स्टेटमेंट वास्तविक संदेश प्रकार को निर्धारित करने के लिए नियंत्रण फ़ील्ड की जांच करता है और तदनुसार deserialize करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3