本文实例讲述了c#实现将json转换为datatable的方法。分享给大家供大家参考。具体实现方法如下:
复制代码 代码如下:
#region 将json转换为datatable
/// <summary>
/// 将json转换为datatable
/// </summary>
/// <param name="strjson">得到的json</param>
/// <returns></returns>
private datatable jsontodatatable(string strjson)
{
//转换json格式
strjson = strjson.replace(",\"", "*\"").replace("\":", "\"#").tostring();
//取出表名
var rg = new regex(@"(?<={)[^:]+(?=:\[)", regexoptions.ignorecase);
string strname = 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;
}
#endregion
/// <summary>
/// 将json转换为datatable
/// </summary>
/// <param name="strjson">得到的json</param>
/// <returns></returns>
private datatable jsontodatatable(string strjson)
{
//转换json格式
strjson = strjson.replace(",\"", "*\"").replace("\":", "\"#").tostring();
//取出表名
var rg = new regex(@"(?<={)[^:]+(?=:\[)", regexoptions.ignorecase);
string strname = 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;
}
#endregion
希望本文所述对大家的c#程序设计有所帮助。
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论