json数组的序列化和反序列化json数组的序列化和反序列化
如题,我就不多说了,自己看代码的,很好理解

using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Text; using System.Web.Script.Serialization; using System.Runtime.Serialization.Json; /// <summary> /// json反序列化对象 /// </summary> public class Nature { public string name { get; set; }//属性编号 public string sex { get; set; } //分类编号 } /// <summary> /// json反序列化对象 /// </summary> public class Person { public string name { get; set; }//属性编号 public string sex { get; set; } //分类编号 public string age { get; set; } //分类编号 public string tel { get; set; } //分类编号 } public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //复杂的json解析 String json = "[{\"name\":\"zhangsan\",\"sex\":\"男\"},{\"name\":\"李四\",\"sex\":\"男\"},{\"name\":\"张娟\",\"sex\":\"女\"},{\"name\":\"慧娟\",\"sex\":\"女\"}]"; List<Nature> nt = Deserialize<List<Nature>>(json); if (nt != null && nt.Count > 0) { Response.Write("复杂的json反序列化:<br/>"); foreach (Nature dt in nt)//打印集合中的元素 { Response.Write(dt.name+"<br/>"); } } //简单的json解析 String json1 = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":\"25\",\"tel\":\"1301554XXXX\"}"; JavaScriptSerializer js = new JavaScriptSerializer(); Person pe = js.Deserialize<Person>(json1); Response.Write("<br/>简单的json反序列化:" + pe.name); Response.Write("<h5>序列化操作</h5>"); Response.Write("<h5>复杂对象序列化</h5>"); List<Nature> list = new List<Nature>() { new Nature(){ name="张三", sex="男"}, new Nature(){ name="慧娟", sex="女"} }; string jsonTxt = JsonSerializer<List<Nature>>(list); Response.Write(jsonTxt); Response.Write("<h5>简单对象序列化</h5>"); Person pes = new Person(); pes.name = "姐姐"; pes.sex = "女"; pes.tel = "1301554XXXX"; pes.age = "23"; string json1Txt = JsonSerializer<Person>(pes); Response.Write(json1Txt); } /// <summary> /// 反序列化json数组 /// </summary> /// <typeparam name="T">对象</typeparam> /// <param name="json">json数组</param> /// <returns></returns> public T Deserialize<T>(string json) { T obj = Activator.CreateInstance<T>(); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); return (T)serializer.ReadObject(ms); } } /// <summary> /// 序列化对象为json /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="t">对象</param> /// <returns></returns> public string JsonSerializer<T>(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, t); string jsonString = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); return jsonString; } }
运行图片:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构