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