Json.Net का उपयोग करके वैश्विक जेसन कनवर्टर को वैश्विक रूप से पंजीकृत करना, मेरे पास मेरी ऑब्जेक्ट्स में गुण हैं जिन्हें उन्हें क्रमबद्ध/deserialize करने के लिए विशेष देखभाल की आवश्यकता है। JsonConverter
के वंश को बनाना, मैं इसे सफलतापूर्वक पूरा करने में कामयाब रहा। यह ऐसा करने का आम तरीका है:Json.Net
public class SomeConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
...
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
...
}
public override bool CanConvert(Type objectType)
{
...
}
}
class SomeClass
{
[JsonProperty, JsonConverter(typeof(SomeConverter))]
public SomeType SomeProperty;
}
//Later on, in code somewhere
SomeClass SomeObject = new SomeClass();
string json = JsonConvert.SerializeObject(SomeObject, new SomeConverter());
इस कोड के साथ मेरी समस्या यह है कि मैं हर क्रमांकन/deserialization में अपने कस्टम कनवर्टर शुरू करने की जरूरत है। मेरे प्रोजेक्ट में कई मामले हैं जो मैं ऐसा नहीं कर सकता। उदाहरण के लिए, मैं अन्य बाहरी परियोजनाओं का उपयोग कर रहा हूं जो जेसन.Net का भी उपयोग करते हैं और वे मेरे SomeClass
उदाहरणों पर काम करेंगे। लेकिन चूंकि मैं अपने कोड में बदलाव नहीं करना चाहता या नहीं कर सकता, इसलिए मेरे कनवर्टर को पेश करने का कोई तरीका नहीं है।
क्या कोई तरीका है कि मैं अपने कनवर्टर को पंजीकृत कर सकता हूं, शायद static
सदस्य का उपयोग जेसननेट में कर सकता हूं, इससे कोई फर्क नहीं पड़ता कि धारावाहिक/deserialization होता है, मेरा कनवर्टर हमेशा मौजूद है?
धन्यवाद एक लाख, आप मेरा दिन :) – Mehran
बनाया है अगर मैं App_Start में यह कर() घटना मैं asp.net वेब एपीआई में कोई त्रुटि मिलती है । कहते हैं 'विधि नहीं मिली:' शून्य न्यूटॉन्सॉफ्ट.जेसन.जेसनकॉनवर्ट.सेट_DefaultSettings' –
@DonnyV। आप शायद JSON.NET के पुराने संस्करण का उपयोग कर रहे हैं - यह अभी भी वर्जन रीडायरेक्ट्स के कारण संकलित है जो web.config में जोड़े गए हैं। – BrainSlugs83