2015-06-22 6 views
5

मैं सी # विकास में नया हूँ की JSON क्रमबद्धता,सी # शब्दकोश

मेरी परियोजना में, मैं इस कोड के साथ एक Settings भंडारण में यह serializing द्वारा एक Dictionary उदाहरण को बचाने की कोशिश:

private static Dictionary<string, Dictionary<int, string>> GetKeys() 
{ 
    Dictionary<string, Dictionary<int, string>> keys = null; 
    try { 
     JavaScriptSerializer ser = new JavaScriptSerializer(); 
     keys = ser.Deserialize<Dictionary<string, Dictionary<int, string>>>(Settings.Default.keys); 
    } 
    catch (Exception e) 
    { 
     Debug.Print(e.Message); 
    } 
    return keys; 
} 

private static void SetKeys(Dictionary<string, Dictionary<int, string>> keys) 
{ 
    try 
    { 
     JavaScriptSerializer ser = new JavaScriptSerializer(); 
     Settings.Default.keys = ser.Serialize(keys); 
    } 
    catch (Exception e) 
    { 
     Debug.Print(e.Message); 
    } 
} 

मेरे समस्या तब होती है जब मैं SetKeys विधि का आह्वान करने का प्रयास करता हूं। एक ThreadAbortException फेंक दिया जाता है:

प्रकार 'System.Threading.ThreadAbortException' का एक पहला मौका अपवाद mscorlib.dll में हुई मूल्यांकन अस्थायी रूप से चलाने के लिए एक धागा की आवश्यकता है। मूल्यांकन करने के लिए वॉच विंडो का उपयोग करें।

क्या आपको पता है कि मैं अपनी त्रुटि को कैसे हल कर सकता हूं?

धन्यवाद

+3

आप इस को देखने के लिए चाहते हो सकता है http : //stackoverflow.com/a/13754871/1099945 – gyosifov

+1

सीरियलाइजिंग/deserializ आईएनजी शब्दकोश हमेशा एक समस्या स्रोत है। मैं शब्दकोश को मिटाने का सुझाव दूंगा और अपना स्वयं का कॉन्फ़िगरेशन संग्रह https://msdn.microsoft.com/en-us/library/ms132438(v=vs.110).aspx तक बढ़ाऊंगा क्योंकि यह एक महत्वपूर्ण संग्रह है जो कि एक भी है संग्रह , जो आसानी से serialized/deserialized है। – Will

उत्तर

3

बेहतर उपयोग Json.NET, लेकिन आप उपयोग करना चाहते हैं JavaScriptSerializer:

प्रयास करें:

var json = new JavaScriptSerializer().Serialize(keys.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString())); 

या:

string jsonString = serializer.Serialize((object)keys); 
+1

जेसन.NET ने मेरी समस्या हल की। आपके सहयोग के लिए धन्यवाद! – alex

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