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); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现