今天看到Json转DataTable的例子,总结一下。。。。

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Web;
  10. using System.Web.Script.Serialization;
  11. namespace JsonDT_List
  12. {
  13.  
  14. class Program
  15. {
  16. static void Main(string[] args)
  17. {
  18. StreamReader sr = new StreamReader(@"F:\vs2015Test\VS2015学习\Json转DT,List\json1.json", Encoding.Default);
  19. var jsonStr = sr.ReadToEnd();
  20. var Dt = JsonToDatatable("");
  21. var str = DataTableToJson(new DataTable());
  22. Console.WriteLine(str);
  23.  
  24. Console.ReadKey();
  25. }
  26.  
  27. public static DataTable JsonToDatatable(string json)
  28. {
  29. DataTable datatable = null;
  30. if (!string.IsNullOrEmpty(json))
  31. {
  32. JavaScriptSerializer jss = new JavaScriptSerializer();
  33. ArrayList list = jss.Deserialize<ArrayList>(json);//将指定的 JSON 字符串转换为 T 类型的对象,可以是自己的List对象
  34. datatable = new DataTable();
  35. if (list.Count > )
  36. {
  37. foreach (Dictionary<string, object> ll in list)//定义一个.Dictionary盛放list中的对象
  38. {
  39. if (datatable.Columns.Count == )
  40. {
  41. foreach (var key in ll.Keys)
  42. datatable.Columns.Add(key, ll[key].GetType()); //添加新列
  43. }
  44. var newRow = datatable.NewRow();
  45. foreach (var k in ll.Keys)
  46. {
  47. newRow[k] = ll[k];//给行上的列赋值
  48. }
  49. datatable.Rows.Add(newRow);
  50. }
  51. }
  52. }
  53. return datatable;
  54. }
  55.  
  56. public static string DataTableToJson(DataTable dt)
  57. {
  58. var jsonStr = "";
  59. if (dt != null)
  60. {
  61. ArrayList arrlist = new ArrayList();
  62. JavaScriptSerializer jss = new JavaScriptSerializer();
  63. foreach (DataRow row in dt.Rows)//遍历DataTable的Rows要是用DataRow
  64. {
  65. Dictionary<string, object> dicDrow = new Dictionary<string, object>();
  66. foreach (DataColumn c in dt.Columns)//遍历DataTable的Columns要使用DataColumn
  67. dicDrow.Add(c.ColumnName, row[c.ColumnName]);
  68. arrlist.Add(dicDrow);
  69. }
  70. jsonStr = jss.Serialize(arrlist);
  71. }
  72. return jsonStr;
  73. }
  74. }
  75. }

该方法只能转换JSON数组格式的字符串,JSON对象格式只能转换成对象。。。。。

附带json1.json格式

  1. [
  2. {
  3. "CFTUin": "",
  4. "CancelDeadline": "2013-09-12 23:00:00",
  5. "CheckInDate": "2013-09-12 00:00:00",
  6. "CheckOutDate": "2013-09-13 00:00:00",
  7. "CityID": "",
  8. "CurrencyCode": "RMB",
  9. "HotelID": "",
  10. "HotelName": "乐家连锁(北京天坛南门店)(原速8酒店(北京天坛南门店)",
  11. "ListID": "",
  12. "PayAmt": "",
  13. "PayType": "",
  14. "RommsCnt": "",
  15. "SPTransID": "",
  16. "State": ""
  17. },
  18. {
  19. "CFTUin": "",
  20. "CancelDeadline": "2013-10-13 23:00:00",
  21. "CheckInDate": "2013-10-13 00:00:00",
  22. "CheckOutDate": "2013-10-18 00:00:00",
  23. "CityID": "",
  24. "CurrencyCode": "RMB",
  25. "HotelID": "",
  26. "HotelName": "上海凯顿酒店",
  27. "ListID": "",
  28. "PayAmt": "",
  29. "PayType": "",
  30. "RommsCnt": "",
  31. "SPTransID": "",
  32. "State": ""
  33. }
  34. ]

Json转换成DataTable的更多相关文章

  1. json转换成对象

    在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...

  2. 带复杂表头合并单元格的HtmlTable转换成DataTable并导出Excel

    步骤: 一.前台JS取HtmlTable数据,根据设定的分隔符把数据拼接起来 <!--导出Excel--> <script type="text/javascript&qu ...

  3. C#_List转换成DataTable

    /// <summary> /// 讲list集合转换成datatable /// </summary> /// <param name="list" ...

  4. 将List转换成DataTable

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. list转换成DataTable

    list转换成DataTable类如下: public static DataTable ToDataTable<T>(this IList<T> datas) { DataT ...

  6. 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

    领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...

  7. C# DataTable转换成实体列表 与 实体列表转换成DataTable

    /// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...

  8. 获取报告 Stream转string,利用字符串分割转换成DataTable

    protected void Button1_Click(object sender, EventArgs e) { MemoryStream stream = new MemoryStream(); ...

  9. C#:CsvReader读取.CSV文件并转换成DataTable

    原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv; ...

随机推荐

  1. 时序分析:HMM模型(状态空间)

    关于HMM模型:时序分析:隐马尔科夫模型 HMM用于手势识别: 训练时每一种手势对应一个HMM-Model,识别率取最大的一个HMM即可.  类似于一个封装的完成多类识别器功能单层网络. 优点: 尤其 ...

  2. 时序分析:DTW算法(基于模板)

    对时序对象进行分析,使用KMP算法可以分析速率不变的模式,参考时序分析:欧式空间轨迹模式识别.使用基于模板匹配的方法,对于速率发生变化的模式,需要用新的对速率要求松散的方法,DTW方法为一种广泛使用的 ...

  3. 用cmd查看win8版本 激活等详细信息命令

    Win+x===>选择以管理员身份运行,输入: slmgr /dlv   显示:最为详尽的激活信息,包括:激活ID.安装ID.激活截止日期slmgr /dli 显示:操作系统版本.部分产品密钥. ...

  4. c#动态类型Dynamic

    需引用System.Dynamic命名空间 来源:http://www.cnblogs.com/ryanding/archive/2010/12/09/1900106.html dynamic Cus ...

  5. html 表单赋值 和 时间戳 转换

    <script> window.onload = function () { var str; // console.log(@ViewBag.ID); $.post("/Ser ...

  6. iconfont

    查看一些网站代码的过程中,会发现许多的图片是不是背景图片或者<img>,而是类似于下面这样: .iconfont{ font-family:"iconfont" !im ...

  7. Mysql [Err] 1118 - Row size too large

    首先声明,对MySQL不懂,很多都不知道原因 设计了一个表,里面很多text字段,然后填进去的东西太多(用的是Python的MySQLdb),报错: _mysql_exceptions.Operati ...

  8. webstorm中vue项目--运行配制

    ## npm搭建的项目,需要运行npm run dev来启动 webstorm作为一款优秀的编辑器,通过配置运行设置,达到一键运行 1.添加node.js配置 2.configuration-> ...

  9. [POI2012]OKR-A Horrible Poem

    正解:对于一个区间l,r,它的循环节长度一定是它的因数. 然后如果循环节是这个长度,那么[l+len,r]一定等于[l,r-len]. 然后每次询问的时候就把它的长度的最小质因子提出来. BZOJ上都 ...

  10. [USACO10DEC]宝箱Treasure Chest

    区间DP,但是卡空间. n2的就是f[i,j]=sum[i,j]-min(f[i+1][j],f[i][j-1])表示这个区间和减去对手取走的最多的. 但是空间是64MB,就很难受 发现一定是由大区间 ...