XML与JSON对象集合的序列化与反序列化实战

需积分: 10 7 下载量 9 浏览量 更新于2024-09-13 收藏 44KB DOC 举报
"这篇文档主要讨论的是XML和JSON在对象及集合序列化和反序列化中的应用,提供了相关的C#代码示例。" 在软件开发中,数据交换和存储经常需要将对象转换成字符串格式,以便在网络间传输或保存到文件系统中。XML(Extensible Markup Language)和JSON(JavaScript Object Notation)是两种广泛使用的数据交换格式。它们都有各自的优点,例如XML具有严格的结构和良好的自解释性,而JSON则更加简洁且易于阅读和处理。 XML序列化与反序列化 XML序列化是将.NET Framework中的对象转换为XML字符串的过程,而反序列化则是将XML字符串转换回相应的对象。在C#中,我们可以使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现这一功能。以下是一个使用`XmlSerializer`进行XML序列化和反序列化的例子: ```csharp public static class PublicObjToString { public static string ToXmlText<T>(T obj) { // ... System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(obj.GetType()); // ... xs.Serialize(mstream, obj); // ... } public static T FromXmlText<T>(string xmlText) { Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(xmlText)); System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T)); return (T)xs.Deserialize(stream); } } ``` 在这个示例中,`ToXmlText`方法接收一个泛型对象`T`并将其序列化为XML字符串,而`FromXmlText`方法接收一个XML字符串并返回反序列化后的对象。 JSON序列化与反序列化 JSON因其简洁性和易于解析的特性,通常在Web服务和轻量级数据交换中被广泛采用。在C#中,可以使用`System.Runtime.Serialization.Json.DataContractJsonSerializer`或第三方库如Newtonsoft.Json(Json.NET)来处理JSON序列化和反序列化。 使用`DataContractJsonSerializer`的一个示例: ```csharp public static string ToJsonText<T>(T obj) { using (MemoryStream mstream = new MemoryStream()) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); serializer.WriteObject(mstream, obj); mstream.Position = 0; using (StreamReader reader = new StreamReader(mstream)) { return reader.ReadToEnd(); } } } public static T FromJsonText<T>(string jsonText) { using (MemoryStream mstream = new MemoryStream(Encoding.UTF8.GetBytes(jsonText))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); return (T)serializer.ReadObject(mstream); } } ``` 比较XML与JSON XML和JSON各有其适用场景。XML提供更丰富的元数据支持,适合结构复杂的数据,但其体积较大。JSON则更适用于轻量级的交互,它的语法接近JavaScript,更容易被前端处理。在性能上,JSON通常比XML更快,因为它不需要XML的解析和验证过程。 选择XML还是JSON取决于应用场景:如果需要高度结构化和自我描述的数据,XML可能是更好的选择;而对于简单、高效的网络通信,JSON往往更合适。通过了解并熟练掌握这两种序列化技术,开发者可以更好地处理数据交换和存储问题。