"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं पायथन में डिफ़ॉल्ट एनकोडर का उपयोग करके कस्टम ऑब्जेक्ट्स JSON सीरियल को कैसे बना सकता हूं?

मैं पायथन में डिफ़ॉल्ट एनकोडर का उपयोग करके कस्टम ऑब्जेक्ट्स JSON सीरियल को कैसे बना सकता हूं?

2025-03-25 को पोस्ट किया गया
ब्राउज़ करें:293

] यह आमतौर पर कोड में परिणाम होता है जो कुछ इस तरह दिखता है:

How can I make custom objects JSON serializable using the default encoder in Python?

क्लास कस्टमेन्डर (json.jsonencoder): DEF डिफ़ॉल्ट (स्व, OBJ): यदि isinstance (obj, foo): obj.to_json () लौटें () JSON.JSONENCODER.DEFAULT (SELF, OBJ) लौटें प्रिंट (json.dumps (obj, cls = customencoder))

, हालांकि, क्या होगा यदि आप डिफ़ॉल्ट एनकोडर का उपयोग करके एक ऑब्जेक्ट सीरियल बनाना चाहते हैं? दुर्भाग्य से, JSON मॉड्यूल द्वारा कोई सीधा समाधान नहीं दिया गया है। इसमें JSON मॉड्यूल के डिफ़ॉल्ट व्यवहार को अपने डिफ़ॉल्ट () विधि को बदलकर संशोधित करना शामिल है। निम्नलिखित स्टैंडअलोन मॉड्यूल यह दर्शाता है कि इस बंदर-पैच को कैसे लागू किया जाए:

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Foo):
            return obj.to_json()

        return json.JSONEncoder.default(self, obj)

print(json.dumps(obj, cls=CustomEncoder))

इस बंदर-पैच किए गए मॉड्यूल का उपयोग करने के लिए, बस इसे आयात करें, और यह स्वचालित रूप से JSON मॉड्यूल में परिवर्तनों को लागू करेगा। JSONENCODER इस पद्धति के लिए जांच करेगा और सीरियलाइजेशन के लिए इसके रिटर्न वैल्यू का उपयोग करेगा। यह स्पष्ट to_json () विधियों की आवश्यकता से बचा जाता है। पायथन ऑब्जेक्ट्स को अचार करने के लिए डिफ़ॉल्ट () विधि को ओवरराइड करके, जो मानक JSON प्रकार नहीं हैं, आप विशेष वर्ग के तरीकों की आवश्यकता के बिना क्रमांकन प्राप्त कर सकते हैं। यह फ़ंक्शन सीरियलाइज़ेशन के दौरान जोड़े गए '_python_object' कुंजी का पता लगा सकता है और इसका उपयोग अचार का उपयोग करके मूल ऑब्जेक्ट को फिर से संगठित करने के लिए कर सकता है। अचार दृष्टिकोण अधिकांश पायथन वस्तुओं के स्वचालित क्रमांकन के लिए अनुमति देता है, जिससे यह अधिक सामान्यीकृत समाधान बन जाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3