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; } }
复制代码


运行图片:

 

源码:http://files.cnblogs.com/netqq/Json.zip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值