C# 將 Json 解析成 DateTable

來源:互聯網
上載者:User

標籤:c#   json   解析   datetable   winfrom   

<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


轉化後效果如下:

 

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

C# 將 Json 解析成 DateTable

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.