C#实现将json转换为DataTable的方法

本文实例讲述了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

希望本文所述对大家的C#程序设计有所帮助。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。