Json数据转换为DataTable

本文介绍了一种将JSON数据转换为DataTable的方法,通过正则表达式解析JSON字符串,创建并填充DataTable,适用于.NET平台的数据处理场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要熟悉Json的数据格式:

         比如包含两条记录的data表:表示为==data: [{sid:'TD411B-G54E49001',......},{......}] 

  /// <summary>
    /// 将获取的Json数据转换为DataTable
    /// </summary>
    /// <param name="strJson">Json字符串</param>
    /// <returns></returns>
     public static DataTable JsonToDataTable(string strJson)
     {
         //取出表名  
         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(':');
                     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;
     }

转载于:https://www.cnblogs.com/gpp0922/archive/2011/09/09/2172258.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值