2011-05-04 7 views
17

मैं उन मामलों के लिए एक कस्टम जेसन कनवर्टर लिखने की कोशिश कर रहा हूं जहां कोई व्यक्ति किसी सूची या संग्रह को उप-वर्गीकृत करता है, लेकिन फिर उप-वर्ग में अतिरिक्त गुण जोड़ता है (here देखें)। JSON.NET का वर्तमान कार्यान्वयन केवल सूची को बाल वस्तुओं की सरणी में बदल देता है और सभी अतिरिक्त गुणों को अनदेखा करता है। तो मैं एक नया जेसन कनवर्टर लिखना चाहता हूं जो ऑब्जेक्ट का व्यवहार करता है जैसे कि एक सूची नहीं थी और सामान्य रूप से अन्य सभी को क्रमबद्ध करने के लिए, लेकिन फिर '_Items' नामक धारावाहिकता में एक नई संपत्ति जोड़ने के लिए जहां वास्तविक सरणी डेटा संग्रहित है।JSON.NET में उपयोग किया जाने वाला डिफ़ॉल्ट जेसन कनवर्टर क्या है?

अब मैंने पहले से ही एक कक्षा लिखी है जो हमारे विशिष्ट सूची उपclass के लिए बिल्कुल ठीक है, लेकिन मुझे मैन्युअल रूप से सभी गुणों को मैन्युअल रूप से निर्दिष्ट करना था। लेकिन अगर मैं एक कनवर्टर लिख सकता हूं जो इसे सामान्य वस्तु के रूप में मानता है, तो मैन्युअल रूप से आइटम को संभालें, मैं सुनहरा होगा। मुझे कोई परवाह नहीं है कि अगर मैं किसी अन्य वर्ग के आधे हिस्से को डुप्लिकेट कर रहा हूं (या इससे भी ज्यादा!) लेकिन मुझे इन मामलों के लिए पुन: प्रयोज्य कनवर्टर बनाना अच्छा लगेगा। हालांकि, जैसा कि मैंने कहा, मुझे से शुरू करने के लिए डिफ़ॉल्ट कनवर्टर नहीं मिल रहा है।

तो ... किसी को पता है कि वह कहां है?

उत्तर

8

JSON.NET में कोई 'डिफ़ॉल्ट कनवर्टर' नहीं है।

यदि आप JsonSerializerInternalWriter कक्षा की जांच करने में सक्षम हैं, तो SerializeValue विधि पर देखें। इसमें, शीर्ष पर 'कनवर्टर ढूंढें और प्रदर्शन करें' चरण है। हालांकि, यदि कोई कनवर्टर नहीं है जो मेल खाता है, तो यह अनुबंध प्रकार क्रमबद्धता (स्विच स्टेटमेंट) को रिसॉर्ट करता है।

मुझे एक इकाई (एक सही तरीका या एक सुंदर हैक) नहीं मिला है जो एक सामान्य अनुबंध क्रमिकरण (पूर्व: एक वस्तु को सामान्य रूप से पार्स करना) करने में सक्षम होने के लिए एक इकाई पर विस्तारित कस्टम क्रमबद्धता (जिसे मैं मानता हूं) आप करने की कोशिश कर रहे हैं)।

संबंधित मुद्दे