C# 将 Json 解析成 DateTable

<pre class="csharp" name="code"> #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
        }
    ]
}

 

例如:

[{"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

 

代码来源:http://zhidao.baidu.com/link?url=Qf5sRgBcmErNAAaquKuMZSesDtTLpqWzy61N3sBBV2n4sqdBX-X3Zn-e5EEWO8KmlkhzO8Tbkv31yUbYpwSh076QrXmCgHseCiMjkATl1rO

C# 将 Json 解析成 DateTable

上一篇:青铜器RDM与PTC Windchill协同构建货真价实的PLM解决方案


下一篇:Window.Event.KeyCode=13