C#中把Datatable转换为Json的5个代码实例
实例一: 复制代码 代码如下: /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table">Datatable对象</param> /// <returns>Json字符串</returns> public static string ToJson(DataTable dt) { StringBuilder jsonString = new StringBuilder(); jsonString.Append("["); DataRowCollection drc = dt.Rows; for (int i = 0; i < drc.Count; i++) { jsonString.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { string strKey = dt.Columns[j].ColumnName; string strValue = drc[i][j].ToString(); Type type = dt.Columns[j].DataType; jsonString.Append(""" + strKey + "":"); strValue = StringFormat(strValue,type); if (j < dt.Columns.Count - 1) { jsonString.Append(strValue + ","); } else { jsonString.Append(strValue); } } jsonString.Append("},"); } jsonString.Remove(jsonString.Length - 1,1); jsonString.Append("]"); return jsonString.ToString(); } /// <summary> /// 格式化字符型、日期型、布尔型 /// </summary> /// <param name="str"></param> /// <param name="type"></param> /// <returns></returns> private static string StringFormat(string str,Type type) { if (type == typeof(string)) { str = String2Json(str); str = """ + str + """; } else if (type == typeof(DateTime)) { str = """ + str + """; } else if (type == typeof(bool)) { str = str.ToLower(); } else if (type != typeof(string) && string.IsNullOrEmpty(str)) { str = """ + str + """; } return str; } /// <summary> /// 过滤特殊字符 /// </summary> /// <param name="s">字符串</param> /// <returns>json字符串</returns> private static string String2Json(String s) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.Length; i++) { char c = s.ToCharArray()[i]; switch (c) { case '"': sb.Append("""); break; case '': sb.Append("\"); break; case '/': sb.Append("/"); break; case 'b': sb.Append("b"); break; case 'f': sb.Append("f"); break; case 'n': sb.Append("n"); break; case 'r': sb.Append("r"); break; case 't': sb.Append("t"); break; default: sb.Append(c); break; } } return sb.ToString(); }
实例二: 复制代码 代码如下: public static string CreateJsonParameters(DataTable dt) { /**//**/ /**//* /**************************************************************************** * Without goingin to the depth of the functioning of this Method,i will try to give an overview * As soon as this method gets a DataTable it starts to convert it into JSON String, * it takes each row and in each row it grabs the cell name and its data. * This kind of JSON is very usefull when developer have to have Column name of the . * Values Can be Access on clien in this way. OBJ.HEAD[0].<ColumnName> * NOTE: One negative point. by this method user will not be able to call any cell by its index. * *************************************************************************/ StringBuilder JsonString = new StringBuilder(); //Exception Handling if (dt != null && dt.Rows.Count > 0) { JsonString.Append("{ "); JsonString.Append(""T_blog":[ "); for (int i = 0; i < dt.Rows.Count; i++) { JsonString.Append("{ "); for (int j = 0; j < dt.Columns.Count; j++) { if (j < dt.Columns.Count - 1) { JsonString.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + """ + dt.Rows[i][j].ToString() + "","); } else if (j == dt.Columns.Count - 1) { JsonString.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + """ + dt.Rows[i][j].ToString() + """); } } /**//**/ /**//*end Of String*/ if (i == dt.Rows.Count - 1) { JsonString.Append("} "); } else { JsonString.Append("},"); } } JsonString.Append("]}"); return JsonString.ToString(); } else { return null; } } 效果: 实例三: 复制代码 代码如下: /// <summary> /// 将一个数据表转换成一个JSON字符串,在客户端可以直接转换成二维数组。 /// </summary> /// <param name="source">需要转换的表。</param> /// <returns></returns> public static string DataTableToJson(DataTable source) { if (source.Rows.Count == 0) return ""; StringBuilder sb = new StringBuilder("["); foreach (DataRow row in source.Rows) { sb.Append("["); for (int i = 0; i < source.Columns.Count; i++) { sb.Append('"' + row[i].ToString() + "","); } sb.Remove(sb.Length - 1,1); sb.Append("],"); } sb.Remove(sb.Length - 1,1); sb.Append("]"); return sb.ToString(); }
实例四: 复制代码 代码如下: public class DataTableConvertJson { #region dataTable转换成Json格式 #endregion dataTable转换成Json格式 foreach (DataTable dt in ds.Tables) /// <summary> 实例五: 复制代码 代码如下: #region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> public class GetClassTypeJosn : IHttpHandler { /// <summary> /// 文件名:DataTable 和Json 字符串互转 /// 版权所有:Copyright (C) Create Family Wealth liangjw /// 创建标示:2013-08-03 /// </summary> //用法说明实例 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "application/json"; context.Response.Charset = "utf-8"; HttpRequest req = context.Request; string method = req["method"].ToStr().ToLower();
} public bool IsReusable #endregion #region Json字符串转换为DataTable 实例方法 public DataTable JsonToDataTable(json) #region DataTable 转换为Json 字符串 return javaScriptSerializer.Serialize(arrayList); //返回一个json字符串 #region Json 字符串 转换为 DataTable数据集合 dataTable.Rows.Add(dataRow); //循环添加行到DataTable中 #region 转换为string字符串类型 PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用: 在线JSON代码检验、检验、美化、格式化工具: JSON在线格式化工具: 在线XML/JSON互相转换工具: json代码在线格式化/美化/压缩/编辑/转换工具: 在线json压缩/转义工具: http://tools.aspzz.cn/code/json_yasuo_trans C语言风格/HTML/CSS/json代码格式化美化工具: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |