Json转换成DataTable
今天看到Json转DataTable的例子,总结一下。。。。
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Data;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Web;
- using System.Web.Script.Serialization;
- namespace Json转DT_List
- {
- class Program
- {
- static void Main(string[] args)
- {
- StreamReader sr = new StreamReader(@"F:\vs2015Test\VS2015学习\Json转DT,List\json1.json", Encoding.Default);
- var jsonStr = sr.ReadToEnd();
- var Dt = JsonToDatatable("");
- var str = DataTableToJson(new DataTable());
- Console.WriteLine(str);
- Console.ReadKey();
- }
- public static DataTable JsonToDatatable(string json)
- {
- DataTable datatable = null;
- if (!string.IsNullOrEmpty(json))
- {
- JavaScriptSerializer jss = new JavaScriptSerializer();
- ArrayList list = jss.Deserialize<ArrayList>(json);//将指定的 JSON 字符串转换为 T 类型的对象,可以是自己的List对象
- datatable = new DataTable();
- if (list.Count > )
- {
- foreach (Dictionary<string, object> ll in list)//定义一个.Dictionary盛放list中的对象
- {
- if (datatable.Columns.Count == )
- {
- foreach (var key in ll.Keys)
- datatable.Columns.Add(key, ll[key].GetType()); //添加新列
- }
- var newRow = datatable.NewRow();
- foreach (var k in ll.Keys)
- {
- newRow[k] = ll[k];//给行上的列赋值
- }
- datatable.Rows.Add(newRow);
- }
- }
- }
- return datatable;
- }
- public static string DataTableToJson(DataTable dt)
- {
- var jsonStr = "";
- if (dt != null)
- {
- ArrayList arrlist = new ArrayList();
- JavaScriptSerializer jss = new JavaScriptSerializer();
- foreach (DataRow row in dt.Rows)//遍历DataTable的Rows要是用DataRow
- {
- Dictionary<string, object> dicDrow = new Dictionary<string, object>();
- foreach (DataColumn c in dt.Columns)//遍历DataTable的Columns要使用DataColumn
- dicDrow.Add(c.ColumnName, row[c.ColumnName]);
- arrlist.Add(dicDrow);
- }
- jsonStr = jss.Serialize(arrlist);
- }
- return jsonStr;
- }
- }
- }
该方法只能转换JSON数组格式的字符串,JSON对象格式只能转换成对象。。。。。
附带json1.json格式
- [
- {
- "CFTUin": "",
- "CancelDeadline": "2013-09-12 23:00:00",
- "CheckInDate": "2013-09-12 00:00:00",
- "CheckOutDate": "2013-09-13 00:00:00",
- "CityID": "",
- "CurrencyCode": "RMB",
- "HotelID": "",
- "HotelName": "乐家连锁(北京天坛南门店)(原速8酒店(北京天坛南门店)",
- "ListID": "",
- "PayAmt": "",
- "PayType": "",
- "RommsCnt": "",
- "SPTransID": "",
- "State": ""
- },
- {
- "CFTUin": "",
- "CancelDeadline": "2013-10-13 23:00:00",
- "CheckInDate": "2013-10-13 00:00:00",
- "CheckOutDate": "2013-10-18 00:00:00",
- "CityID": "",
- "CurrencyCode": "RMB",
- "HotelID": "",
- "HotelName": "上海凯顿酒店",
- "ListID": "",
- "PayAmt": "",
- "PayType": "",
- "RommsCnt": "",
- "SPTransID": "",
- "State": ""
- }
- ]
Json转换成DataTable的更多相关文章
- json转换成对象
在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在 ...
- 带复杂表头合并单元格的HtmlTable转换成DataTable并导出Excel
步骤: 一.前台JS取HtmlTable数据,根据设定的分隔符把数据拼接起来 <!--导出Excel--> <script type="text/javascript&qu ...
- C#_List转换成DataTable
/// <summary> /// 讲list集合转换成datatable /// </summary> /// <param name="list" ...
- 将List转换成DataTable
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- list转换成DataTable
list转换成DataTable类如下: public static DataTable ToDataTable<T>(this IList<T> datas) { DataT ...
- 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据
领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...
- C# DataTable转换成实体列表 与 实体列表转换成DataTable
/// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...
- 获取报告 Stream转string,利用字符串分割转换成DataTable
protected void Button1_Click(object sender, EventArgs e) { MemoryStream stream = new MemoryStream(); ...
- C#:CsvReader读取.CSV文件并转换成DataTable
原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv; ...
随机推荐
- 时序分析:HMM模型(状态空间)
关于HMM模型:时序分析:隐马尔科夫模型 HMM用于手势识别: 训练时每一种手势对应一个HMM-Model,识别率取最大的一个HMM即可. 类似于一个封装的完成多类识别器功能单层网络. 优点: 尤其 ...
- 时序分析:DTW算法(基于模板)
对时序对象进行分析,使用KMP算法可以分析速率不变的模式,参考时序分析:欧式空间轨迹模式识别.使用基于模板匹配的方法,对于速率发生变化的模式,需要用新的对速率要求松散的方法,DTW方法为一种广泛使用的 ...
- 用cmd查看win8版本 激活等详细信息命令
Win+x===>选择以管理员身份运行,输入: slmgr /dlv 显示:最为详尽的激活信息,包括:激活ID.安装ID.激活截止日期slmgr /dli 显示:操作系统版本.部分产品密钥. ...
- c#动态类型Dynamic
需引用System.Dynamic命名空间 来源:http://www.cnblogs.com/ryanding/archive/2010/12/09/1900106.html dynamic Cus ...
- html 表单赋值 和 时间戳 转换
<script> window.onload = function () { var str; // console.log(@ViewBag.ID); $.post("/Ser ...
- iconfont
查看一些网站代码的过程中,会发现许多的图片是不是背景图片或者<img>,而是类似于下面这样: .iconfont{ font-family:"iconfont" !im ...
- Mysql [Err] 1118 - Row size too large
首先声明,对MySQL不懂,很多都不知道原因 设计了一个表,里面很多text字段,然后填进去的东西太多(用的是Python的MySQLdb),报错: _mysql_exceptions.Operati ...
- webstorm中vue项目--运行配制
## npm搭建的项目,需要运行npm run dev来启动 webstorm作为一款优秀的编辑器,通过配置运行设置,达到一键运行 1.添加node.js配置 2.configuration-> ...
- [POI2012]OKR-A Horrible Poem
正解:对于一个区间l,r,它的循环节长度一定是它的因数. 然后如果循环节是这个长度,那么[l+len,r]一定等于[l,r-len]. 然后每次询问的时候就把它的长度的最小质因子提出来. BZOJ上都 ...
- [USACO10DEC]宝箱Treasure Chest
区间DP,但是卡空间. n2的就是f[i,j]=sum[i,j]-min(f[i+1][j],f[i][j-1])表示这个区间和减去对手取走的最多的. 但是空间是64MB,就很难受 发现一定是由大区间 ...