- #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://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
转化后效果如下: