C# url的编码解码,xml和json的序列化和反序列化
参考中国慕课网dot net web编程应用程序实践
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; using System.Runtime.Serialization.Json; namespace CommonFunctions { public class Functions { /// <summary> /// 对url中待传值进行编码 /// </summary> /// <param name="decodeStr">待编码的字符串</param> /// <returns></returns> public static string EncodeUrl(string decodeStr) { byte [] buf = Encoding.UTF8.GetBytes(decodeStr); string res = ""; foreach(byte b in buf) { res += b.ToString("X2"); } return res; } /// <summary> /// 对url进行解码 /// </summary> /// <param name="encodeStr">待解码的字符串</param> /// <returns></returns> public static string DecodeUrl(string encodeStr) { int count = encodeStr.Length / 2; byte[] buf = new byte[count]; for(int i = 0; i < count; i++) { buf[i] = byte.Parse(encodeStr.Substring(i * 2, 2),System.Globalization.NumberStyles.HexNumber); } return Encoding.UTF8.GetString(buf); } /// <summary> /// xml序列化 /// </summary> /// <typeparam name="T">待序列化得对象类型</typeparam> /// <param name="obj">待序列化的对象</param> /// <returns></returns> public static string SerializerXml<T>(T obj) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); xmlSerializer.Serialize(ms, obj); return Encoding.UTF8.GetString(ms.ToArray()); } /// <summary> /// xml反序列化 /// </summary> /// <typeparam name="T">待反序列化的对象类型</typeparam> /// <param name="xmlStr">待反序列化的xml字符串</param> /// <returns></returns> public static T DeserializerXml<T>(string xmlStr) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); byte[] buf = Encoding.UTF8.GetBytes(xmlStr); MemoryStream ms = new MemoryStream(buf); return (T)xmlSerializer.Deserialize(ms); } /// <summary> /// json序列化 /// </summary> /// <typeparam name="T">待序列化的对象类型</typeparam> /// <param name="obj">待序列化的对象</param> /// <returns></returns> public static string SerializerJson<T>(T obj) { DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); jsonSerializer.WriteObject(ms, obj); return Encoding.UTF8.GetString(ms.ToArray()); } /// <summary> /// json反序列化 /// </summary> /// <typeparam name="T">待反序列化的对象类型</typeparam> /// <param name="jsonStr">待反序列化的json字符串</param> /// <returns></returns> public static T DeserializerJson<T>(string jsonStr) { DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T)); byte[] buf = Encoding.UTF8.GetBytes(jsonStr); MemoryStream ms = new MemoryStream(buf); return (T)jsonSerializer.ReadObject(ms); } } }