.NET DataTable转换为JSON格式的字符串
在进行数据传递的时候,有时我们需要通过Ajax的方式或者其他的方式传递一个数据列表,可以将DataTable或者其他形式的数据列表转换为JSON的格式,通过Ajax实体的形式进行传递。
比如说:
/// <summary> /// DataTable 转换为Json /// </summary> /// <param name="dt">datatable</param> /// <returns></returns> public string DataTableToJson(DataTable dt) { //如果原数据为空,则直接返回空结构 if (dt == null || dt.Rows.Count<=0) return "{}"; string columnFirst = ""; List<string> result = new List<string>(); StringBuilder Json = new StringBuilder(); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { if (columnFirst != dt.Rows[i][0].ToString()) { if (i != 0) { AddNewJson(Json, result, dt); } columnFirst = dt.Rows[i][0].ToString(); result = new List<string>(); for (int k = 0; k < dt.Columns.Count; k++) { result.Add("\"" + dt.Rows[i][k].ToString() + "\""); } } else { for (int k = 0; k < dt.Columns.Count; k++) { if (!result[k].Contains(dt.Rows[i][k].ToString())) { result[k] += ",\"" + dt.Rows[i][k].ToString() + "\""; } } } if (i == dt.Rows.Count - 1) { AddNewJson(Json, result, dt); } } } return Json.ToString(); } /// <summary> /// 添加新的Json /// </summary> /// <param name="Json"></param> /// <param name="result"></param> /// <param name="dt"></param> private void AddNewJson(StringBuilder Json, List<string> result, DataTable dt) { Json.Append("{"); for (int i = 0; i < dt.Columns.Count; i++) { Json.Append("\""); Json.Append(dt.Columns[i].ColumnName); Json.Append("\":"); if (result[i].Contains(",")) { Json.Append("["); Json.Append(result[i]); if (i == dt.Columns.Count - 1) { Json.Append("]"); } else { Json.Append("],"); } } else { Json.Append(result[i]); if (i != dt.Columns.Count - 1) { Json.Append(","); } } } Json.Append("}"); }