今天看到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的更多相关文章

  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. Reducing the Dimensionality of Data with Neural Networks:神经网络用于降维

    原文链接:http://www.ncbi.nlm.nih.gov/pubmed/16873662/ G. E. Hinton* and R. R. Salakhutdinov .   Science. ...

  2. js 判断是否为数字

    if (data.value === "" || data.value == null) { return false; } console.log(!isNaN(data.val ...

  3. 测试模式 windows2008 内部版本7601

    win server 2008 r2 enterprise 64位系统. 最近手贱,对服务器进行了一下更新,结果傻叉了,这是什么鬼,明明显示已经激活的,但就是有这么一串碍眼的字幕. 电脑右下角居然出现 ...

  4. Git创建本地分支并关联远程分支(二)

    创建本地分支git branch 分支名 例如:git branch dev,这条命令是基于当前分支创建的本地分支,假设当前分支是master(远程分支),则是基于master分支创建的本地分支dev ...

  5. 单点登录之 CAS SSO 从入门到精通(第一天)

    转自:http://blog.csdn.net/lifetragedy/article/details/43817903 啊......it's quite a long time. 好久没更新博客了 ...

  6. echarts在地图上绘制散点图(任意点)

    项目需求:在省份地图上绘制散点图,散点位置不一定是哪个城市或哪个区县,即任意点 通过查询官网文档,找到一个与需求类似的Demo:https://www.echartsjs.com/gallery/ed ...

  7. 记一次惊心的网站 TCP 队列问题排查经历

    https://blog.csdn.net/chenlycly/article/details/80868990 http://www.mytju.com/classcode/news_readnew ...

  8. Docker创建Mysql容器并通过命令行连接到容器

    拉取网易蜂巢的mysql-server:5.6 docker pull hub.c.163.com/nce2/mysql:5.6 创建mysql5.6容器 1master+3个slave docker ...

  9. jquery 绑定回车(Enter )事件

    全局: $(function(){ document.onkeydown = function(e){ var ev = document.all ? window.event : e; if(ev. ...

  10. Codeforces 902D/901B - GCD of Polynomials

    传送门:http://codeforces.com/contest/902/problem/D 本题是一个数学问题——多项式整除. 对于两个整数a.b,求最大公约数gcd(a,b)的辗转相除法的函数如 ...