/// <summary>
/// 将json转换为DataTable
/// </summary>
/// <param name="strJson">得到的json</param>
/// <returns></returns>
private DataTable JsonToDataTable(string strJson)
{
//转换json格式
strJson = strJson.Replace(",\"", "*\"").Replace("\":", "\"#").ToString();
//取出表名
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('#'); if (strCell[0].Substring(0, 1) == "\"")
{
int a = strCell[0].Length;
dc.ColumnName = strCell[0].Substring(1, a - 2);
}
else
{
dc.ColumnName = strCell[0];
}
tb.Columns.Add(dc);
}
tb.AcceptChanges();
} //增加内容
DataRow dr = tb.NewRow();
for (int r = 0; r < strRows.Length; r++)
{
dr[r] = strRows[r].Split('#')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\"", "");
}
tb.Rows.Add(dr);
tb.AcceptChanges();
} return tb;
}

  

最新文章

  1. Windows 安装JRuby 生成 war 到 tomcat 运行
  2. 《Linux内核设计与实现》读书笔记 第十八章 调试
  3. Codeforces Round #333 (Div. 2)
  4. 1046: 最小的K个数
  5. android 页面停几秒后跳转
  6. 给你完美浪漫的七夕,APICloud送你双人电影票!
  7. Session为null 问题
  8. 归并排序 &amp; 计数排序 &amp; 基数排序 &amp; 冒泡排序 &amp; 选择排序 ----&gt; 内部排序性能比较
  9. Mac下配置PHP+Apache+phpMyAdmin+MySql远程链接
  10. UVALive - 3713 Astronauts
  11. VS2012+EF6+Mysq
  12. Manacher算法解析
  13. Window Server配置Flask
  14. springboot返回页面
  15. Redis学习一(基础入门).
  16. MonkeyRunner 之如何获取APP的Package Name和Activity Name
  17. oracle 语句 笔记
  18. go install and go captcha
  19. ODS与DW之间的关系
  20. xcode 各版本下载地址及其它工具下载地址

热门文章

  1. 如何用SQL语句实现Mysql数据库的备份与还原
  2. QT常用资料
  3. /px/em/rem/的区别
  4. 集群 &amp; 负载均衡
  5. 如何导出和导入mysql数据(数据迁移)
  6. tomcat解决加载JSP文件过大错误
  7. Redis -- 03 持久化
  8. Java实现多线程的三种方式
  9. JavaScript中常见的数组操作函数及用法
  10. [2015.07.27]万峰图片批量处理专家 v8.6