.NET的JSNO 序列化跟反序列化
2015-04-29 15:07 ko绝缘体 阅读(406) 评论(0) 编辑 收藏 举报由于本人最近在写webservice,之前一直都同通过AJAX,在服务端处理业务,但是最近需要写一些接口给其他人用,需要使用jsno的序列化与反序列化,什么是jsno就不多说,jsno的好处也不多说,直接贴代码。
1.需要引用System.Web.Script.Serialization;
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 using System.Web.Script.Serialization; 7 using System.Data; //后面用到DataTable
2.先说把对象转换成JSNO字符串。首先对象转JSON
1 /// <summary> 2 /// 对象转JSON 3 /// </summary> 4 /// <param name="obj">对象</param> 5 /// <returns>JSON格式的字符串</returns> 6 public static string ObjectToJSON(object obj) 7 { 8 JavaScriptSerializer jss =new JavaScriptSerializer(); 9 try 10 { 11 return jss.Serialize(obj); 12 } 13 catch(Exception ex) 14 { 15 16 throw new Exception("JSONHelper.ObjectToJSON(): "+ ex.Message); 17 } 18 }
3.DataTable dt数据集转换成JSNO字符串,需要将数据集DataTable转换成值对集合,才能通过对象转换成JSNO字符串
1 /// 数据表转键值对集合 2 public static List<Dictionary<string,object>> DataTableToList(DataTable dt) 3 { 4 List<Dictionary<string,object>> list=new List<Dictionary<string,object>>(); 5 6 foreach(DataRow dr in dt.Rows) 7 { 8 Dictionary<string,object> dic =new Dictionary<string,object>(); 9 foreach(DataColumn dc in dt.Columns) 10 { 11 dic.Add(dc.ColumnName, dr[dc.ColumnName]); 12 } 13 list.Add(dic); 14 } 15 return list; 16 } 17 18 19 // 数据表转JSON 20 public static string DataTableToJSON(DataTable dt) 21 { 22 return ObjectToJSON(DataTableToList(dt)); 23 }
4.JSON文本转对象,泛型方法
1 public static T JSONToObject<T>(string jsonText) 2 { 3 JavaScriptSerializer jss =new JavaScriptSerializer(); 4 try 5 { 6 return jss.Deserialize<T>(jsonText); 7 } 8 catch(Exception ex) 9 { 10 throw new Exception("JSONHelper.JSONToObject(): "+ ex.Message); 11 } 12 }
5.将JSON文本转换为数据表数据
1 public static Dictionary<string,List<Dictionary<string,object>>> TablesDataFromJSON(string jsonText) 2 { 3 return JSONToObject <Dictionary<string,List<Dictionary<string,object>>>>(jsonText); 4 }