zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C# 将 Json 解析成 DateTable

c#JSONJSON 解析
2023-09-14 09:02:13 时间
/// 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; // 去除表名 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://blog.csdn.net/jiankunking/article/details/42531209

 







格式如下:

{

 "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