在C#中,可以使用System.Runtime.Serialization
命名空間中的DataContractSerializer
類來實現字典的序列化和反序列化
首先,需要添加System.Runtime.Serialization
的引用。
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
class Program
{
static void Main(string[] args)
{
// 創建一個字典對象
Dictionary<string, int> dictionary = new Dictionary<string, int>
{
{"apple", 1},
{"banana", 2},
{"orange", 3}
};
// 序列化字典
string serializedDictionary = SerializeDictionary(dictionary);
Console.WriteLine("Serialized dictionary: " + serializedDictionary);
// 反序列化字典
Dictionary<string, int> deserializedDictionary = DeserializeDictionary<string, int>(serializedDictionary);
Console.WriteLine("Deserialized dictionary:");
foreach (KeyValuePair<string, int> entry in deserializedDictionary)
{
Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}
}
public static string SerializeDictionary<TKey, TValue>(Dictionary<TKey, TValue> dictionary)
{
using (MemoryStream memoryStream = new MemoryStream())
{
DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<TKey, TValue>));
serializer.WriteObject(memoryStream, dictionary);
memoryStream.Position = 0;
using (StreamReader reader = new StreamReader(memoryStream))
{
return reader.ReadToEnd();
}
}
}
public static Dictionary<TKey, TValue> DeserializeDictionary<TKey, TValue>(string serializedDictionary)
{
using (MemoryStream memoryStream = new MemoryStream())
{
using (StreamWriter writer = new StreamWriter(memoryStream))
{
writer.Write(serializedDictionary);
writer.Flush();
memoryStream.Position = 0;
DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<TKey, TValue>));
return (Dictionary<TKey, TValue>)serializer.ReadObject(memoryStream);
}
}
}
}
這個示例中,我們創建了一個包含水果名稱和數量的字典。然后,我們使用SerializeDictionary
方法將字典序列化為字符串,并使用DeserializeDictionary
方法將字符串反序列化為字典。最后,我們打印出序列化和反序列化后的字典。