MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

विशेषता के बिना एक वर्ग पर वैश्विक स्तर पर एक JsonConverter का उपयोग करें

हाँ, आप एक कस्टम IContractResolver . का उपयोग कर सकते हैं प्रोग्रामेटिक रूप से एक JsonConverter लागू करने के लिए एक वर्ग या संपत्ति के लिए। ऐसा करने का सबसे आसान तरीका है अपने रिज़ॉल्वर को DefaultContractResolver . से प्राप्त करना class और फिर उपयुक्त विधि को ओवरराइड करें। नीचे एक उदाहरण समाधानकर्ता है जो Json.Net को ObjectIdConverter का उपयोग करने का निर्देश देता है ObjectId . के सभी उदाहरणों पर प्रकार, चाहे वे किसी भी वर्ग में दिखाई दें।

class CustomResolver : DefaultContractResolver
{
    protected override JsonObjectContract CreateObjectContract(Type objectType)
    {
        JsonObjectContract contract = base.CreateObjectContract(objectType);
        if (objectType == typeof(ObjectId))
        {
            contract.Converter = new ObjectIdConverter();
        }
        return contract;
    }
}

रिज़ॉल्वर का उपयोग करने के लिए, आप एक JsonSerializer . बना सकते हैं उदाहरण और ContractResolver सेट करें उस पर संपत्ति, फिर उस उदाहरण का उपयोग अपने क्रमबद्धता/deserialization करने के लिए करें। यदि आप JObject.ToObject() . का उपयोग कर रहे हैं और JObject.FromObject() , ध्यान दें कि दोनों विधियों में ओवरलोड हैं जो एक JsonSerializer . को स्वीकार करते हैं उदाहरण।

JsonSerializer serializer = new JsonSerializer();
serializer.ContractResolver = new CustomResolver();

JObject jo = JObject.FromObject(foo, serializer);

वैकल्पिक रूप से, यदि आप JsonConvert . का उपयोग कर रहे हैं अपना क्रमांकन/deserialization करने के लिए कक्षा, आप JsonSerializerSettings का एक उदाहरण बना सकते हैं , ContractResolver सेट करें उस पर संपत्ति, फिर सेटिंग्स को SerializeObject() . पर पास करें और DeserializeObject() तरीके।

JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ContractResolver = new CustomResolver();

Foo foo = JsonConvert.DeserializeObject<Foo>(json, settings);

आशा है कि यह मदद करता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या है Mongoose त्रुटि ObjectId पर कास्ट करें मान XXX के लिए पथ _id पर विफल रहा?

  2. क्या आपके पास एपेंड के बजाय मोंगो $ पुश प्रीपेन्ड हो सकता है?

  3. स्प्रिंग डेटा मोंगोडब आईएसओ तिथि के लिए खोज करता है

  4. ऑब्जेक्ट आईडी बनाने की कोशिश में उल्का अमान्य हेक्साडेसिमल स्ट्रिंग त्रुटि देता है?

  5. मोंगोडीबी $atanh