के बजाय कस्टम अनुबंध रिज़ॉल्वर का उपयोग करते समय कस्टम जेसन कनवर्टर को डीएसरियलाइजेशन के लिए अनदेखा किया जाता है, मैं क्रमशः जेसन.नेट (6.0.3) का उपयोग कर रहा हूं। मैंने एक कस्टम जेसन कनवर्टर TestConverter
लिखा है जो कुछ BaseClass
(उन्हें एक पूर्णांक आईडी और पीछे में परिवर्तित करके) के उदाहरणों को संभालता है। जब मैं JsonConverter[typeof(TestConverter)]
के साथ अपनी कक्षाओं में गुणों को एनोटेट करता हूं तो सब ठीक काम कर रहा है।जेसन कनवर्टर विशेषता
हालांकि मैं documentation के अनुसार, कस्टम अनुबंध रिज़ॉल्वर का उपयोग करना पसंद करूंगा, जो सभी विशेषता उपयोग को पूरी तरह से प्रतिस्थापित करने में सक्षम हो। लेकिन ऐसा लगता है कि कनवर्टर मैं अनुबंध समाधानकर्ता में स्थापित पूरी तरह से अक्रमांकन प्रक्रिया के दौरान नजरअंदाज कर रहे हैं
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var property = base.CreateProperty(member, memberSerialization);
if (typeof(BaseClass).IsAssignableFrom(property.PropertyType))
{
property.Converter = new TestConverter();
}
return property;
}
सब कुछ क्रमबद्धता के लिए ठीक काम कर रहा है,:
यहाँ कैसे मैं अनुबंध समाधानकर्ता की स्थापना की है। ReadJson
TestConverter
की विधि कभी नहीं कहा जाता है।
क्या मुझे कुछ वास्तव में स्पष्ट याद आ रही है? क्या मुझे किसी अन्य स्थान पर कनवर्टर को संपत्ति में संलग्न करने की आवश्यकता है?
मैंने एक छोटा चलने वाला उदाहरण बनाया जो समस्या का प्रदर्शन करता है। यदि लाइन 57 में [JsonConverter]
विशेषता टिप्पणी की गई है, तो प्रोग्राम अपवाद के साथ क्रैश हो जाएगा क्योंकि Json.net TestConverter
का उपयोग करने के बजाय किसी ऑब्जेक्ट में एक पूर्णांक को परिवर्तित करने का प्रयास कर रहा है। उदाहरण के लिए स्रोत यहां पाया जा सकता है: http://pastebin.com/xgVS6hXY
किसी भी मदद के लिए अग्रिम धन्यवाद!
धन्यवाद, यह काम करता है। क्या आपको पता है कि दोनों के बीच क्या अंतर है/मुझे दो सेटिंग्स की आवश्यकता क्यों है? मैंने पाया [यह] (http://stackoverflow.com/questions/18330008/the-difference-between-converter-and-memberconverter-properties-of-json-nets-js) SO सवाल है, लेकिन यह वास्तव में मदद नहीं करता है । – Jonas