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#程序设计有所帮助。

以上是 C#实现将json转换为DataTable的方法 的全部内容, 来源链接: utcz.com/z/321019.html

回到顶部