C# 将 Json 解析成 DateTable

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
#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  
            }  
        ]  
    }  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:Asp.Net 加密解密

下一篇:用php的fsocket模拟get提交 模拟post提交表单