C# 将 Json 解析成 DateTable

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

#region 将 Json 解析成 DateTable  
        /// <summary>     
        /// 将 Json 解析成 DateTable。    
        /// Json 数据格式如:   
        ///     {table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]}   
        /// </summary>     
        /// <param name="strJson">要解析的 Json 字符串</param>     
        /// <returns>返回 DateTable</returns>     
        public 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].Replace("\"", "");  
                        tb.Columns.Add(dc);  
                    }  
                    tb.AcceptChanges();  
                }  
                // 增加内容     
                DataRow dr = tb.NewRow();  
                for (int j = 0; j < strRows.Length; j++)  
                {  
                    dr[j] = strRows[j].Split(':')[1].Replace("\"", "");  
                }  
                tb.Rows.Add(dr);  
                tb.AcceptChanges();  
            }  
            return tb;  
        }  
        #endregion  

格式如下:

    {  
        "table": [  
            {  
                "column1": 1,   
                "column2": 2,   
                "column3": 3  
            },   
            {  
                "column1": 1,   
                "column2": 2,   
                "column3": 3  
            }  
        ]  
    }