(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