• 技术文章 >后端开发 >C#.Net教程

    C# 将 Json 解析成 DateTable

    黄舟黄舟2017-02-18 10:39:49原创966
    C# 将 Json 解析成 DateTable

     #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;
    
                //数据为空返回
                if (strJson.Trim().Length == 0)
                {
                    return tb;
                }
                // 检查strJson是否是json字符串
                if (!JsonSplit.IsJson(strJson))
                {
                    return tb;
                }
    
                try
                {
                    // 去除表名  
                    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();
                    }
                }
                catch (Exception ee)
                {
                    MessageBox.Show(ee.ToString());
                }
                return tb;
            }
            #endregion

    识别一个字符串是否Json格式://m.sbmmt.com/csharp-article-352536.html


    格式如下:

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

    例如:

    [{"Code":"MetaDataId","Name":"MetaDataId"},{"Code":"MetadataCode","Name":"编号"},{"Code":"SolutionName","Name":"名称"}]


    格式化后:

    [
        {
            "Code": "MetaDataId", 
            "Name": "MetaDataId"
        }, 
        {
            "Code": "MetadataCode", 
            "Name": "编号"
        }, 
        {
            "Code": "SolutionName", 
            "Name": "名称"
        }
    ]

    代码格式化工具:http://tool.oschina.net/codeformat/xml


    转化后效果如下:

    以上就是C# 将 Json 解析成 DateTable 的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:C# Json DateTable
    上一篇:C# 如何识别一个字符串是否Json格式 下一篇:C# Excel数据验重及Table数据验重
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• C语言入门之聊聊基础知识(数据类型、变量、函数、数组等)• c语言中node是什么意思• 聊聊如何利用纯C语言对EXCEL进行读写操作• C语言必背18个经典程序,C语言初学者必会(收藏)• asp.net验证码的简单制作
    1/1

    PHP中文网