,asp.net DataTable与Json相互转化

将Datatable转化为Json数据形式

#region 方法[DataTableToJson]DataTable转化为Json形式

public static string DataTableToJson(string jsonName, DataTable dt)

{

StringBuilder Json = new StringBuilder();

Json.Append("{\"" + jsonName + "\":[");

if (dt.Rows.Count > 0)

{

for (int i = 0; i < dt.Rows.Count; i++)

{

Json.Append("{");

for (int j = 0; j < dt.Columns.Count; j++)

{

Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\"");

if (j < dt.Columns.Count - 1)

{

Json.Append(",");

}

}

Json.Append("}");

if (i < dt.Rows.Count - 1)

{

Json.Append(",");

}

}

}

Json.Append("]}");

return Json.ToString();

}

#endregion

将Json的数据形式转化为Datatable

#region 方法[JsonToDataTable]Json转化为Datatable形式

public static DataTable JsonToDataTable(string strJson)

{

//取出表名

Regex rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);

string strName = rg.Match(strJson).Value;

DataTable tb = null;

string Str_Head = "";

//去除表名

strJson = strJson.Substring(strJson.IndexOf("[") + 1);

strJson = strJson.Substring(0, strJson.IndexOf("]"));

//获取数据

rg = new Regex(@"(?<={)[^}]+(?=})");

MatchCollection mc = rg.Matches(strJson);

for (int i = 0; i < mc.Count; i++)

{

string strRow = mc[i].Value;

string[] strRows = strRow.Split(',');

//创建表

if (tb == null)

{

tb = new DataTable();

tb.TableName = strName;

foreach (string str in strRows)

{

DataColumn dc = new DataColumn();

string[] strCell = str.Split(':');

Str_Head = strCell[0].ToString().Substring(0, strCell[0].ToString().Length - 1);//去除最后一位字符串

Str_Head = Str_Head.Substring(1);//去除第一位字符串

dc.ColumnName = Str_Head;

//dc.ColumnName = strCell[0].ToString();

tb.Columns.Add(dc);

}

tb.AcceptChanges();

}

//增加内容

DataRow dr = tb.NewRow();

for (int r = 0; r < strRows.Length; r++)

{

//Str_Cell = strRows[r].Split(':')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("/", "").Substring(0, strRows[1].ToString().Length - 1);

//Str_Cell = Str_Cell.Substring(1);

//dr[r] = Str_Cell;

dr[r] = strRows[r].Split(':')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("/", "");

dr[r] = dr[r].ToString().Substring(0, Convert.ToString(dr[r]).Length - 1);//去除最后一位字符串

dr[r] = Convert.ToString(dr[r]).Substring(1);//去除第一位字符串

}

tb.Rows.Add(dr);

tb.AcceptChanges();

}

return tb;

}

#endregion