How to serialize IDictionary

Does anyone know of a creative way to serialize objects that implement IDictionary? ... without implementing a new class?

+4
source share
3 answers

If a class that implements IDictionary is serializable (e.g. Dictionary<K,V> ), and K and V are serializable, then the standard .NET serialization mechanisms should work.

If the class that implements IDictionary is serialized, but K and V , then you can use two arrays to serialize the keys and associated values ​​separately:

 // before serialization IDictionary<string,int> dict; string[] keys = dict.Keys.ToArray(); int[] values = dict.Keys.Select(key => dict[key]).ToArray(); // after deserialization IDictionary<string,int> dict = new Dictionary<string,int>(); for (int i = 0; i < keys.Length; i++) dict.Add(keys[i], values[i]); 
+12
source

I assume that you mean that you need to serialize a dictionary, which is part of a class in which you do not control?

In short, you must serialize keys and values ​​separately. To deserialize, go to each item in the key / value arrays and add them back to the dictionary.

+1
source

You can use System.Runtime.Serialization.DataContractSerializer , with ReadObject and WriteObject just as you would Deserialize and Serialize . It works like a charm.

0
source

All Articles