下面我来为你详细讲解一下 "ASP.NET 序列化和反序列化演示" 的攻略。
简介
在 ASP.NET 开发中,序列化和反序列化是一个非常重要的操作。序列化可以将对象转化为字节流或者xml格式,并存储在内存或者文件中。反序列化则是将字节流或者xml格式的数据重新转化为对象。序列化和反序列化通常用于跨应用程序或网络传输对象时使用,例如:通过web服务发送和接收数据,或将对象存储在文件系统中。
序列化和反序列化示例
1. 序列化和反序列化JSON数据
示例代码如下:
using System;
using System.IO;
using System.Runtime.Serialization.Json;
public static class JsonSerializer
{
public static string Serialize<T>(T obj)
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
}
public static T Deserialize<T>(string json)
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var ms = new MemoryStream(System.Text.Encoding.Default.GetBytes(json)))
{
return (T)serializer.ReadObject(ms);
}
}
}
示例中通过 C# 语言的 System.Runtime.Serialization.Json 模块提供的 DataContractJsonSerializer 序列化和反序列化 JSON 数据。
使用示例:
// 创建对象
var obj = new { Name = "Tom", Age = 18 };
// 序列化
var jsonStr = JsonSerializer.Serialize(obj); // {"Name":"Tom","Age":18}
// 反序列化
var newObj = JsonSerializer.Deserialize<dynamic>(jsonStr);
Console.WriteLine(newObj.Name + " " + newObj.Age); // Tom 18
2. 序列化和反序列化XML数据
示例代码如下:
using System;
using System.IO;
using System.Xml.Serialization;
public static class XmlSerializerHelper
{
public static string Serialize<T>(T obj)
{
var serializer = new XmlSerializer(typeof(T));
using (var stream = new StringWriter())
{
serializer.Serialize(stream, obj);
return stream.ToString();
}
}
public static T Deserialize<T>(string xml)
{
var serializer = new XmlSerializer(typeof(T));
using (var stream = new StringReader(xml))
{
return (T)serializer.Deserialize(stream);
}
}
}
示例中通过 C# 语言的 System.Xml.Serialization 模块提供的 XmlSerializer 序列化和反序列化 XML 数据。
使用示例:
// 创建对象
var obj = new { Name = "Tom", Age = 18, Address = new { Province = "Beijing", City = "Chaoyang" } };
// 序列化
var xmlStr = XmlSerializerHelper.Serialize(obj);
// <?xml version="1.0" encoding="utf-16"?>
// <ArrayOfAnyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
// <AnyType xsi:type="xsd:string">{"Name":"Tom","Age":18,"Address":{"Province":"Beijing","City":"Chaoyang"}}</AnyType>
// </ArrayOfAnyType>
// 反序列化
var newObj = XmlSerializerHelper.Deserialize<dynamic>(xmlStr);
Console.WriteLine(newObj.AnyType); // {"Name":"Tom","Age":18,"Address":{"Province":"Beijing","City":"Chaoyang"}}
可以看出,序列化后的数据格式是 XML 格式,并且对象属性被转化为 AnyType 值,并且在 AnyType 后添加了对象类型的标记,反序列化时再解析出对象。
结论
ASP.NET 提供了多种序列化和反序列化的方式,本文主要介绍了两种常用的方式: JSON 和 XML 数据的序列化和反序列化。选用何种方式需根据实际需求和限制进行选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net 序列化and反序列化演示 - Python技术站