前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 将 Json 解析成 DateTable

C# 将 Json 解析成 DateTable

原创
作者头像
用户8671053
修改2021-11-02 16:01:07
1K0
修改2021-11-02 16:01:07
举报
文章被收录于专栏:码农的生活
代码语言:javascript
复制
#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  </pre> 
 


 格式如下: 
    {  
        "table": [  
            {  
                "column1": 1,   
                "column2": 2,   
                "column3": 3  
            },   
            {  
                "column1": 1,   
                "column2": 2,   
                "column3": 3  
            }  
        ]  
    }    

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档