{
//转换json格式
strJson = strJson.Replace(",\"", "*\"").Replace("\":", "\"#").ToString();
//取出表名
var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);
string strName = "Table";//rg.Match(strJson).Value;
DataTable tb = null;
//去除表名
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)
{
var dc = new DataColumn();
string[] strCell = str.Split('#');
if (strCell[0].Substring(0, 1) == "\"")
{
int a = strCell[0].Length;
dc.ColumnName = strCell[0].Substring(1, a - 2);
}
else
{
dc.ColumnName = strCell[0];
}
tb.Columns.Add(dc);
}
tb.AcceptChanges();
}
//增加内容
DataRow dr = tb.NewRow();
for (int r = 0; r < strRows.Length; r++)
{
dr[r] = strRows[r].Split('#')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\"", "");
}
tb.Rows.Add(dr);
tb.AcceptChanges();
}
return tb;
}
或者
public static DataTable ToDataTable(string json)
{
DataTable dt = new DataTable();
DataTable result;
try
{
JavaScriptSerializer jz = new JavaScriptSerializer();
jz.MaxJsonLength = Int32.MaxValue;
ArrayList arraylist = jz.Deserialize<ArrayList>(json);
if (arraylist.Count > 0)
{
foreach (Dictionary<string, object> item in arraylist)
{
if (item.Keys.Count<string>() == 0)
{
result = dt;
return result;
}
if (dt.Columns.Count == 0)
{
foreach (string current in item.Keys)
{
dt.Columns.Add(current, item[current].GetType());
}
}
DataRow dataRow = dt.NewRow();
foreach (string current in item.Keys)
{
dataRow[current] = item[current];
}
dt.Rows.Add(dataRow); //循环添加行到DataTable中
}
}
}
catch (Exception)
{
throw;
}
result = dt;
return result;
}