C# Datatable和json互相转换操作


 1 #region  DataTable 转换为Json字符串实例方法
  2 /// 
  3 /// GetClassTypeJosn 的摘要说明
  4 /// 
  5 public class GetClassTypeJosn : IHttpHandler
  6 {
  7     /// 
  8     /// 文件名:DataTable 和Json 字符串互转
  9     /// 版权所有:Copyright (C) Create Family Wealth liangjw
 10     /// 创建标示:2013-08-03
 11     ///  
 12     //用法说明实例
 13      public void ProcessRequest(HttpContext context)
 14     {
 15         context.Response.ContentType = "application/json";
 16         context.Response.Charset = "utf-8";
 17         HttpRequest req = context.Request;
 18         string method = req["method"].ToStr().ToLower();
 19  
 20  
 21        //获取合同明细列表  DataTable 转换为Json字符串
 22         if (method == "txtdate")
 23         {
 24             string json = "";
 25             BO.MakeContractMx bll = new MakeContractMx();
 26             DataSet ds = bll.GetDataTable();
 27             if (ds.Tables.Count > 0)
 28             {
 29                 json =ToJson(ds.Tables[0]);
 30             }
 31             context.Response.Write(json);
 32             return;
 33         }
 34  
 35     }
 36  
 37    public bool IsReusable
 38     {
 39         get
 40         {
 41             return false;
 42         }
 43     }
 44 }
 45  
 46    #endregion
 47  
 48     #region Json字符串转换为DataTable 实例方法
 49  
 50     public DataTable JsonToDataTable(json)
 51     {
 52        DataTable  dt= ToDataTable(json);
 53          return dt;
 54     }
 55      
 56    #endregion
 57  
 58     #region DataTable 转换为Json 字符串
 59     /// 
 60     /// DataTable 对象 转换为Json 字符串
 61     /// 
 62     /// 
 63     /// 
 64     public static string ToJson(this DataTable dt)
 65     {
 66         JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
 67         javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
 68         ArrayList arrayList = new ArrayList();
 69         foreach (DataRow dataRow in dt.Rows)
 70         {
 71             Dictionary dictionary = new Dictionary();  //实例化一个参数集合
 72             foreach (DataColumn dataColumn in dt.Columns)
 73             {
 74                 dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());
 75             }
 76             arrayList.Add(dictionary); //ArrayList集合中添加键值
 77         }
 78  
 79         return javaScriptSerializer.Serialize(arrayList);  //返回一个json字符串
 80     }
 81     #endregion
 82  
 83     #region Json 字符串 转换为 DataTable数据集合
 84     /// 
 85     /// Json 字符串 转换为 DataTable数据集合
 86     /// 
 87     /// 
 88     /// 
 89     public static DataTable ToDataTable(this string json)
 90     {
 91         DataTable dataTable = new DataTable();  //实例化
 92         DataTable result;
 93         try
 94         {
 95             JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
 96             javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
 97             ArrayList arrayList = javaScriptSerializer.Deserialize(json);
 98             if (arrayList.Count > 0)
 99             {
100                 foreach (Dictionary dictionary in arrayList)
101                 {
102                     if (dictionary.Keys.Count() == 0)
103                     {
104                         result = dataTable;
105                         return result;
106                     }
107                     if (dataTable.Columns.Count == 0)
108                     {
109                         foreach (string current in dictionary.Keys)
110                         {
111                             dataTable.Columns.Add(current, dictionary[current].GetType());
112                         }
113                     }
114                     DataRow dataRow = dataTable.NewRow();
115                     foreach (string current in dictionary.Keys)
116                     {
117                         dataRow[current] = dictionary[current];
118                     }
119  
120                     dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
121                 }
122             }
123         }
124         catch
125         {
126         }
127         result = dataTable;
128         return result;
129     }
130     #endregion
131  
132     #region 转换为string字符串类型
133     /// 
134     ///  转换为string字符串类型
135     /// 
136     /// 获取需要转换的值
137     /// 需要格式化的位数
138     /// 返回一个新的字符串
139     public static string ToStr(this object s, string format = "")
140     {
141         string result = "";
142         try
143         {
144             if (format == "")
145             {
146                 result = s.ToString();
147             }
148             else
149             {
150                 result = string.Format("{0:" + format + "}", s);
151             }
152         }
153         catch
154         {
155         }
156         return result;
157     }
158    #endregion

转载:http://www.cnblogs.com/markli/p/4468889.html
C