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格式:http://www.php.cn/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 的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!