关键词搜索

源码搜索 ×
×

C# 将 Json 解析成 DateTable

发布2015-01-07浏览2926次

详情内容

  1. #region 将 Json 解析成 DateTable
  2. /// <summary>
  3. /// 将 Json 解析成 DateTable。
  4. /// Json 数据格式如:
  5. /// {table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]}
  6. /// </summary>
  7. /// <param name="strJson">要解析的 Json 字符串</param>
  8. /// <returns>返回 DateTable</returns>
  9. public DataTable JsonToDataTable(string strJson)
  10. {
  11. // 取出表名
  12. var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);
  13. string strName = rg.Match(strJson).Value;
  14. DataTable tb = null;
  15. //数据为空返回
  16. if (strJson.Trim().Length == 0)
  17. {
  18. return tb;
  19. }
  20. // 检查strJson是否是json字符串
  21. if (!JsonSplit.IsJson(strJson))
  22. {
  23. return tb;
  24. }
  25. try
  26. {
  27. // 去除表名
  28. strJson = strJson.Substring(strJson.IndexOf("[") + 1);
  29. strJson = strJson.Substring(0, strJson.IndexOf("]"));
  30. // 获取数据
  31. rg = new Regex(@"(?<={)[^}]+(?=})");
  32. MatchCollection mc = rg.Matches(strJson);
  33. for (int i = 0; i < mc.Count; i++)
  34. {
  35. string strRow = mc[i].Value;
  36. string[] strRows = strRow.Split(',');
  37. // 创建表
  38. if (tb == null)
  39. {
  40. tb = new DataTable();
  41. tb.TableName = strName;
  42. foreach (string str in strRows)
  43. {
  44. var dc = new DataColumn();
  45. string[] strCell = str.Split(':');
  46. dc.ColumnName = strCell[0].Replace("\"", "");
  47. tb.Columns.Add(dc);
  48. }
  49. tb.AcceptChanges();
  50. }
  51. // 增加内容
  52. DataRow dr = tb.NewRow();
  53. for (int j = 0; j < strRows.Length; j++)
  54. {
  55. dr[j] = strRows[j].Split(':')[1].Replace("\"", "");
  56. }
  57. tb.Rows.Add(dr);
  58. tb.AcceptChanges();
  59. }
  60. }
  61. catch (Exception ee)
  62. {
  63. MessageBox.Show(ee.ToString());
  64. }
  65. return tb;
  66. }
  67. #endregion


识别一个字符串是否Json格式:http://blog.csdn.net/jiankunking/article/details/42531209

 

 
 
 

格式如下:

  1. {
  2. "table": [
  3. {
  4. "column1": 1,
  5. "column2": 2,
  6. "column3": 3
  7. },
  8. {
  9. "column1": 1,
  10. "column2": 2,
  11. "column3": 3
  12. }
  13. ]
  14. }

 

例如:

[{"Code":"MetaDataId","Name":"MetaDataId"},{"Code":"MetadataCode","Name":"编号"},{"Code":"SolutionName","Name":"名称"}]


格式化后:

  1. [
  2. {
  3. "Code": "MetaDataId",
  4. "Name": "MetaDataId"
  5. },
  6. {
  7. "Code": "MetadataCode",
  8. "Name": "编号"
  9. },
  10. {
  11. "Code": "SolutionName",
  12. "Name": "名称"
  13. }
  14. ]

 

代码格式化工具:http://tool.oschina.net/codeformat/xml


转化后效果如下:

 

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

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载