DataTable或DataSet与JSON互转
2011-12-07 09:30
351 查看
通过AJAX异步减少网络内容传输,而JSON则可以把传输内容缩减到纯数据;然后利用jQuery内置的AJAX功能直接获得JSON格式的数据;在客户端直接绑定到数据控件里面,从而达到最优。 #region dataTable转换成Json格式 /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string DataTable2Json(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\""); jsonBuilder.Append(dt.TableName.ToString()); jsonBuilder.Append("\":["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } #endregion dataTable转换成Json格式 #region DataSet转换成Json格式 /// <summary> /// DataSet转换成Json格式 /// </summary> /// <param name="ds">DataSet</param> /// <returns></returns> public static string Dataset2Json(DataSet ds) { StringBuilder json = new StringBuilder(); foreach (DataTable dt in ds.Tables) { json.Append("{\""); json.Append(dt.TableName); json.Append("\":"); json.Append(DataTable2Json(dt)); json.Append("}"); } return json.ToString(); } #endregion
今天又发现了有更好的转换方法,具体如下 :
public class ConventDataTableToJson { /// <summary> /// 序列化方法(带分页) /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string Serialize(DataTable dt) { List<Dictionary<string, object>> list = new List<Dictionary<string, object>>(); foreach (DataRow dr in dt.Rows) { Dictionary<string, object> result = new Dictionary<string, object>(); foreach (DataColumn dc in dt.Columns) { result.Add(dc.ColumnName, dr[dc].ToString()); } list.Add(result); } int count = 0; try { count = Convert.ToInt32(dt.TableName); } catch (System.Exception ex) { count = dt.Rows.Count; } string strReturn = ""; if (count == 0) { strReturn = "{\"totalCount\":0,\"data\":[]}"; } else { strReturn = ConventToJson(list, count); } return strReturn; } /// <summary> /// 转换为JSON对象 /// </summary> /// <returns></returns> public static string ConventToJson<T>(List<T> list, int count) { JavaScriptSerializer serializer = new JavaScriptSerializer(); string strJson = serializer.Serialize(list); strJson = strJson.Substring(1); strJson = strJson.Insert(0, "{totalCount:" + count + ",data:["); strJson += "}"; return strJson; } /// <summary> /// 不需要分页 /// </summary> /// <param name="dt"></param> /// <param name="flag">false</param> /// <returns></returns> public static string Serialize(DataTable dt,bool flag) { JavaScriptSerializer serializer = new JavaScriptSerializer(); List<Dictionary<string, object>> list = new List<Dictionary<string, object>>(); foreach (DataRow dr in dt.Rows) { Dictionary<string, object> result = new Dictionary<string, object>(); foreach (DataColumn dc in dt.Columns) { result.Add(dc.ColumnName, dr[dc].ToString()); } list.Add(result); } return serializer.Serialize(list); ; } }
相关文章推荐
- ASP.NET dataset转json和dataTable转json
- JSON 的数据转换格式(DataTable或DataSet) -善良公社项目
- dataset datatable 转json
- 将datatable和dataset中的数据转为json数据 与反转
- JSON与DataTable(DataSet)相互转化
- DataTable或DataSet转JSON
- C#中的DataSet、string、DataTable 、对象转换成Json
- 将JSON转成DataSet(DataTable)
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
- DataTable或DataSet与JSON互转
- 继承JsonConverter实现json.net支持dataset与datatable序列化
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
- LINQ返回DataTable类型 list转dataset 转换为JSON对象
- .NET-DataTable或DataSet转JSON
- (C#)中的DataSet、string、DataTable等对象转换成Json
- Dataset/Datatable/Datarow转Json的一种方法
- asp.net DataTable和Dataset序列化成Json格式
- C# DataTable转json,DataSet转json
- JSON与DataTable(DataSet)相互转化
- asp.net DataTable和Dataset序列化成Json格式