代码改变世界

.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     }