C#中Map集合的序列化与反序列化方法

   2024-09-30 4230
核心提示:在C#中,可以使用System.Runtime.Serialization命名空间中的DataContractSerializer类来实现Map集合(字典)的序列化和反序列化

在C#中,可以使用System.Runtime.Serialization命名空间中的DataContractSerializer类来实现Map集合(字典)的序列化和反序列化

首先,需要引入System.Runtime.Serialization命名空间:

using System.Runtime.Serialization;

接下来,定义一个包含字典的数据协定类:

[DataContract]public class MapContainer{    [DataMember]    public Dictionary<string, string> Map { get; set; }}

然后,创建一个DataContractSerializer实例,用于序列化和反序列化字典:

DataContractSerializer serializer = new DataContractSerializer(typeof(MapContainer));

序列化:将字典转换为XML格式的字符串。

MapContainer container = new MapContainer{    Map = new Dictionary<string, string>    {        { "key1", "value1" },        { "key2", "value2" }    }};using (MemoryStream stream = new MemoryStream()){    serializer.WriteObject(stream, container);    stream.Position = 0;    using (StreamReader reader = new StreamReader(stream))    {        string xmlString = reader.ReadToEnd();        Console.WriteLine("Serialized XML:");        Console.WriteLine(xmlString);    }}

反序列化:将XML格式的字符串转换回字典。

string xmlString = "<MapContainer xmlns=\"http://schemas.datacontract.org/2004/07/YourNamespace\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><Map><item><key>key1</key<value>value1</value></item><item><key>key2</key<value>value2</value></item></Map></MapContainer>";using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString))){    MapContainer deserializedContainer = (MapContainer)serializer.ReadObject(stream);    Console.WriteLine("Deserialized Map:");    foreach (var item in deserializedContainer.Map)    {        Console.WriteLine($"Key: {item.Key}, Value: {item.Value}");    }}

注意:在这个示例中,我们使用了MemoryStreamStreamReader来处理XML字符串。你也可以使用其他方法,如文件流或网络流,根据实际需求进行调整。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号