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

JSON स्ट्रिंग के अक्रमांकन के दौरान नाम स्थान परिवर्तन को संभालना

"$type" . का प्रारूप भेजने वाले सिस्टम के सीएलआर नेमस्पेस को शामिल करने के लिए आधिकारिक तौर पर हार्डकोड किया गया है। तो, आप या तो कर सकते हैं:

  1. भेजने वाले सिस्टम से मेल खाने के लिए अपने CLR नामस्थान का नाम बदलें, या

  2. DefaultSerializationBinder को उपवर्गित करें और इसे JsonSerializerSettings.Binder में सेट करके deserialization के दौरान CLR नेमस्पेस नामों का नाम बदलने के लिए इसका उपयोग करें। ।

ऐसा करने में पहली कटौती निम्नलिखित है:

public class NamespaceMappingSerializationBinder : DefaultSerializationBinder
{
    public string FromNamespace { get; set; }

    public string ToNamespace { get; set; }

    public override Type BindToType(string assemblyName, string typeName)
    {
        string fixedTypeName;
        if (FromNamespace != null && ToNamespace != null)
        {
            fixedTypeName = typeName.Replace(FromNamespace, ToNamespace);
        }
        else
        {
            fixedTypeName = typeName;
        }
        var type = base.BindToType(assemblyName, fixedTypeName);
        return type;
    }
}

फिर, जब आप अपने JSON को deserialize करते हैं, तो Binder . सेट करें JsonSerializerSettings . में इस तरह:

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, Binder = new NamespaceMappingSerializationBinder { FromNamespace = "From Namespace", ToNamespace = "Your Namespace" } };

उपरोक्त में टाइप नेम पार्सिंग बेहद क्रूड है। मुझे यहां एक अधिक स्मार्ट पार्सर मिला:सी # जेनेरिक प्रकार के नामों का विश्लेषण कैसे करें? । आपको कस्टम Binder . का विस्तार करने की भी आवश्यकता हो सकती है मानचित्रण का शब्दकोश रखने के लिए।

इसी तरह, यदि आपको क्रमांकन पर नेमस्पेस नामों को रीमैप करने की आवश्यकता है, और .Net 4.0 या इसके बाद के संस्करण में काम कर रहे हैं, तो आप BindToName को ओवरराइड कर सकते हैं। ।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या गैर-अवरुद्ध रेडिस पबसुब संभव है?

  2. JSON स्ट्रिंग के अक्रमांकन के दौरान नाम स्थान परिवर्तन को संभालना

  3. रेडिस:सूची परिणाम का विश्लेषण कैसे करें

  4. अजवाइन हरा + पासवर्ड के साथ रेडिस कोई प्रामाणिक अपवाद नहीं फेंकता है

  5. इस साधारण बेंचमार्क में SQLite रेडिस से तेज क्यों है?