JSON數據轉換DataTable


/// <summary>
/// 將json轉換為DataTable
/// </summary>
/// <param name="strJson">得到的json</param>
/// <returns></returns>
private System.Data.DataTable JsonToDataTable(string strJson)
{
      //轉換json格式
      strJson = strJson.Replace(",\"", "*\"").Replace("\":", "\"#").ToString();
      //取出表名
      var rg = new System.Text.RegularExpressions.Regex(@"(?<={)[^:]+(?=:\[)", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
      string strName = rg.Match(strJson).Value;
      System.Data.DataTable tb = null;
      //去除表名
     strJson = strJson.Substring(strJson.IndexOf("[") + 1);
    strJson = strJson.Substring(0, strJson.IndexOf("]"));

    //獲取數據
    rg = new System.Text.RegularExpressions.Regex(@"(?<={)[^}]+(?=})");
   System.Text.RegularExpressions.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 System.Data.DataTable();
   TableName = strName;
  foreach (string str in strRows)
  {
    var dc = new System.Data.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();
  }

//增加內容
  System.Data.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;
  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM