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

मैं अस्पष्ट JSON सरणियों और वस्तुओं को कैसे संभाल सकता हूं?

2025-02-06 पर पोस्ट किया गया
ब्राउज़ करें:133

How Can I Handle Ambiguous JSON Arrays and Objects During Deserialization?

JSON डेटा को संसाधित करते समय, आप अक्सर संरचनात्मक असंगति का सामना करते हैं। कुछ गुणों को एक उदाहरण में सरणियों के रूप में और दूसरे में वस्तुओं के रूप में दर्शाया जा सकता है। यह deserialization के दौरान समस्याओं का कारण बन सकता है, खासकर टाइप-सेफ कक्षाओं का उपयोग करते समय।

सवाल:

फेसबुक द्वारा लौटे JSON डेटा पर विचार करें:

]
  • { "विवरण": "", "पर्मलिंक": "..." }

      {
        "description": "",
        "permalink": "..."
      }
  • { "मीडिया": [ { "href": "...", "एसआरसी": "..." } ] }
  • ]

      {
        "media": [
            {
                "href": "...",
                "src": "..."
            }
        ]
      }
  • चलती दीवार पोस्ट के मामले में, "मीडिया" विशेषता को एक सरणी के बजाय एक खाली वस्तु के रूप में दर्शाया गया है। यह अंतर एक वर्ग का उपयोग करते समय विफल होने का कारण बनता है जो "फेसबुकमीडिया" वस्तुओं की एक सरणी की उम्मीद करता है।

    ] इस स्थिति को संभालने के लिए, हम एक कस्टम JSON कनवर्टर बना सकते हैं। यह कनवर्टर JSON संरचना की जांच करेगा और एक सरणी या ऑब्जेक्ट की उपस्थिति के आधार पर एक सूची या अशक्त लौटाएगा। ] { पब्लिक ओवरराइड ऑब्जेक्ट Readjson (JsonReader Reader, Type ObjectType, ऑब्जेक्ट मौजूदा, JSonserializer Serializer) { if (reader.tokentype == jsontoken.startarray) रिटर्न सीरियल। अन्य वापसी नल; } पब्लिक ओवरराइड शून्य राइटजसन (JSONWRITER लेखक, ऑब्जेक्ट वैल्यू, JSonserializer Serializer) { नया NotimplementEdException () फेंक दें; } सार्वजनिक ओवरराइड बूल कैनकनवर्ट (टाइप ऑब्जेक्टटाइप) { वापसी ऑब्जेक्ट टाइप == टाइपोफ़ (सूची ); } }

      {
        "name": null,
        "caption": null,
        "media": {}
      }
  • ]
सार्वजनिक सूची मीडिया {}

अब, deserialization "मीडिया" विशेषता के सरणी और वस्तु को सफलतापूर्वक संसाधित करेगा।

एकल वस्तुओं के लिए एक्सटेंशन:

]

] { पब्लिक ओवरराइड ऑब्जेक्ट Readjson (JsonReader Reader, Type ObjectType, ऑब्जेक्ट मौजूदा, JSonserializer Serializer) { वस्तु परिणाम; if (reader.tokentype == jsontoken.startObject) { T उदाहरण = (t) Serializer.Deserialize (रीडर, टाइपोफ़ (टी)); परिणाम = नई सूची {उदाहरण}; } और अगर (reader.tokentype == jsontoken.startarray) { परिणाम = serializer.deserialize (पाठक, ऑब्जेक्टटाइप); } अन्य { नए JSonserializationException ("अप्रत्याशित टोकन प्रकार।") फेंक दें; } वापसी परिणाम; } // ... बाकी कनवर्टर कार्यान्वयन ... }
 
] 
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3